kubernetes 部署相关
下面主要说的还是使用kubeadm搭建的步骤。注意这里演示的是单节点操作执行的是完整的1-6,多节点主节点仍然执行[1-7],从节点执行[1-4,5中加入集群,6,7]。: 需要用户手动配置,支持 containerd、CRI-O 等符合 CRI 标准的运行时。(单节点需要做,多节点不用做)删除控制平面上的污点,以便可以在其上调度容器。避坑: 默认虚拟机慢+吃资源,加 --driver=docke
ubuntu 24 + kubernetes 1.33(containerd 1.7.27)
0 环境信息
操作系统 |
kernel |
CPUs |
DISK |
IP |
虚拟机平台 |
Ubuntu 24.04.3 LTS |
6.12.0-061200-generic |
32 |
188G+2T |
10.20.173.9/24 |
VMware20,1 |
下面主要说的还是使用kubeadm搭建的步骤。注意这里演示的是单节点操作执行的是完整的1-6;多节点主节点仍然执行[1-7],从节点执行[1-4,5中加入集群,6,7]。
1 配置内核转发及网桥过滤
cat << EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
加载模块
modprobe overlay
modprobe br_netfilter
查看模块是否加载完成
lsmod | grep br_netfilter
lsmod | grep overlay
应用配置
sysctl --system
2 关闭swap分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
重启
reboot
3 安装容器运行时
wget https://github.com/containerd/containerd/releases/download/v1.7.27/cri-containerd-1.7.27-linux-amd64.tar.gz
tar xf cri-containerd-1.7.27-linux-amd64.tar.gz -C /
mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
vi /etc/containerd/config.toml
【sandbox_image = "registry.k8s.io/pause:3.8" --> sandbox_image = "registry.k8s.io/pause:3.10"
【SystemdCgroup = false --> SystemdCgroup = true
# 开机自启并现在启动
systemctl enable --now containerd
# 安装成功验证版本
ctr -v
4 安装k8s组件
# 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包
apt-get update
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
apt-get install -y apt-transport-https ca-certificates curl gpg
# 下载用于k8s软件包仓库的公共签名密钥
# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 添加k8s apt仓库
# 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.33/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 更新apt包索引
apt-get update
apt-get install -y kubelet kubeadm kubectl # --allow-change-held-packages
apt-mark hold kubelet kubeadm kubectl
配置kubelet
vim /etc/default/kubelet
【KUBELET_EXTRA_ARGS="--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock --pod-infra-container-image=registry.k8s.io/pause:3.10 --cgroup-driver=systemd"
systemctl enable kubelet
5 主节点配置
# 查看k8s配置需要的组件
kubeadm config images list
# 拉取镜像
kubeadm config images pull
# 主节点初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.20.173.9
注意:上述apiserver-advertise-address后添加自己的ip地址
初始化失败使用下面命令重置后重试
kubeadm reset -f
初始化成功(这里的命令直接复制初始化完成kubeadm提供的命令)
# 初始化成功
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看集群节点:
kubectl get nodes
如果多节点,在node节点上运行命令加入集群
# 其余node节点执行(此命令是初始化成功输出的信息) kubeadm join 10.20.173.9:6443 --token 5ikr0b.bqit54ddrdjvee0d \ --discovery-token-ca-cert-hash sha256:e0c4acfe0c38826891b62ece54ee36d34dab41bbecdf7996760da107a6933d37
6 安装calico
# 安装
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/tigera-operator.yaml
# 下载配置文件
wget https://raw.githubusercontent.com/projectcalico/calico/v3.30.3/manifests/custom-resources.yaml
# 编辑配置文件修改pod网段
vim custom-resources.yaml
【修改成自己设置的网段即可10.244.0.0/16
kubectl create -f custom-resources.yaml
检查calico是否运行成功
kubectl get pod -n calico-system
使用watch命令持续监控pod状态(稍微久一点)
watch kubectl get pod -n calico-system
(单节点需要做,多节点不用做)删除控制平面上的污点,以便可以在其上调度容器
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
7 仅针对多节点集群
如果是多节点集群,可以参考下面进行优化配置统一管理(所有主机都做):
1 设置主机名
hostnamectl set-hostname "k8smaster"
hostnamectl set-hostname "k8snode1"
hostnamectl set-hostname "k8snode2"
2 互信
cat >> /etc/hosts << EOF
192.168.31.224 k8smaster
192.168.31.225 k8snode1
192.168.31.226 k8snode2
EOF
ssh-keygen -t rsa
ssh-copy-id ip/hostname
# ip/hostname 填入对方的ip或hostname
3 时间同步
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 安装ntpdate与阿里云同步
sudo apt install -y ntpsec-ntpdate
ntpdate ntp.aliyun.com
# 配置自动同步
crontab -e
0 0 * * * ntpdate ntp.aliyun.com
附录
这里介绍一些常见的kubernetes环境搭建工具。可以根据自己的环境需求进行采用。
1 Kubeadm
这也是我们前面搭建的步骤
🛠 Kubeadm - 生产级积木
标签: #生产基石 #官方标准 #手动挡
点评: 这不是玩具!是搭建真·生产集群的工具!
体验:
步骤多,需手动配节点、网络等。
学习曲线陡,但能深入理解K8s。
适合: 运维、目标K8s大神、搭建生产环境。
警告: 🚨小白慎入! 本地玩别用它,会劝退!
容器运行时: 需要用户手动配置,支持 containerd、CRI-O 等符合 CRI 标准的运行时 Container Runtimes | Kubernetes +2
CRI: 用户自选(containerd 推荐)
网络: 需要额外安装 CNI 插件(如 Flannel、Calico)
存储: 需要配置存储类
命令行工具: kubectl、kubeadm、kubelet
特点: 官方集群初始化工具,需要更多手动配置
2 K3s
🚀 k3d / k3s - 速度王者
https://docs.k3s.io/zh/
标签: #轻量 #秒启动 #省资源
点评: 快!巨快!开发测试效率之王!
亮点:
基于轻量k3s,用Docker跑,集群秒起!
多节点一条命令丝滑搞定。
适合: 追求极致效率、需频繁创建销毁集群的程序员。
种草: 电脑配置不高?想快速验证想法?选它!
k3s
容器运行时: 在 Docker 容器中运行 k3s Choosing a Local Dev Cluster | Tilt
CRI: containerd(k3s 内置)
网络: Flannel(默认)
存储: Local Path Provisioner
命令行工具: kubectl、k3d CLI
负载均衡: Traefik(内置)
3 Minikube
刚入坑云原生,被 Minikube、Kind、Kubeadm 搞晕?别怕!🔥 帮你扒清主流工具,找到你的“本命”!👇
🥇 Minikube - 全能老大哥
标签: #经典 #功能全 #虚拟机/Docker
点评: 啥都能干,速度中规中矩!新手友好,体验全面。
亮点:
安装简单,minikube start 就行。
集成 Dashboard、Ingress 等插件,方便!(minikube addons enable)
适合: 入门小白,要稳定全功能本地环境。
避坑: 默认虚拟机慢+吃资源,加 --driver=docker!
Minikube
容器运行时: 默认使用虚拟机方式,支持 Docker、containerd Choosing a Local Dev Cluster | Tilt
网络: 内置网络代理
存储: 支持多种存储驱动
命令行工具: kubectl(需单独安装)
特点: 在虚拟机中运行完整的 Kubernetes 集群
4 Kind
🤓 Kind - 官方亲儿子(k8s in docker)
标签: #Google出品 #测试同款 #稳定
点评: K8s官方自用测试工具,兼容稳如狗!
亮点:
Docker跑节点,启动快。
社区生态好,CI/CD常用。
适合: 想紧跟官方技术栈、需高度一致测试环境。
Tip: Kind更“原味”,k3d更“轻”。
容器运行时: 在 Docker 容器中运行 K3d vs k3s vs Kind vs Microk8s vs Minikube,使用 containerd
CRI: containerd
网络: kindnet(基于 CNI)
存储: 本地路径存储
命令行工具: kubectl、kind CLI
特点: 专为测试设计的轻量级方案
5 MicroK8s
📦 MicroK8s - Ubuntu懒人包
标签: #Ubuntu亲儿子 #开箱即用 #全家桶
点评: snap install microk8s 一键搞定,懒人福音!
亮点:
Ubuntu用户最简单选择!
自带 Istio, Knative 等插件,microk8s enable 启用。
适合: Ubuntu死忠,想快速搭带流行组件的环境。
避坑: Snap管理,可能遇非标Docker的坑。😉
容器运行时: containerd(默认)
CRI: containerd
网络: Calico(可选启用)
存储: hostpath-storage(内置)
命令行工具: microk8s.kubectl(内置)
包管理: Snap 包管理
特点: Canonical 维护的轻量级 Kubernetes
6 在线k8s练习平台
3 labex
参考资料:
[1] https://www.xiaohongshu.com/discovery/item/687e3c140000000011001b74?source=webshare&xhsshare=pc_web&xsec_token=ABlI26lf3PPNgQJqsZJxZDJOn-Y6F8Gr42YPMJEe-wLJg=&xsec_source=pc_share
[2] https://www.cnblogs.com/Chary/p/18830285
[3] https://blog.csdn.net/qq_41638904/article/details/148406337
[4] https://docs.tigera.io/calico/latest/getting-started/kubernetes/k8s-single-node
[5] https://developer.aliyun.com/article/1473063
[6] https://labex.io/zh/tutorials/kubernetes-online-kubernetes-playground-593609
更多推荐
所有评论(0)