kubeadm 部署遵循 K8s 官方最佳实践,核心分前置准备、初始化 Master、加入 Node、验证集群四步,结合你的环境(Containerd 运行时)给出实操步骤: 前置条件(所有节点都要做)

# 1. 关闭防火墙/SELinux/swap
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab

# 2. 配置内核参数(开启IPVS/桥接模式)
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system

# 3. 安装容器运行时(你的集群是Containerd)
apt install -y containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/' /etc/containerd/config.toml  # 关键:开启systemd cgroup
systemctl restart containerd && systemctl enable containerd

# 4. 安装kubeadm/kubelet/kubectl(K8s核心组件)
apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat > /etc/apt/sources.list.d/kubernetes.list << EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt update && apt install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00
apt-mark hold kubelet kubeadm kubectl  # 锁定版本,防止自动升级

步骤 1:初始化 Master 节点(核心) 这一步是 kubeadm 部署的核心,会自动生成控制平面组件(apiserver/controller-manager/scheduler)、证书、kubelet 配置:

# 初始化Master(指定Pod网段、Service网段、镜像仓库,适配国内网络)
kubeadm init \
  --kubernetes-version=v1.28.0 \
  --pod-network-cidr=10.244.0.0/16 \  # 用于CNI网络插件(如flannel/calico)
  --service-cidr=10.96.0.0/12 \
  --image-repository=registry.aliyuncs.com/google_containers \  # 国内镜像源,避免拉取失败
  --cri-socket=unix:///run/containerd/containerd.sock  # 指定Containerd套接字(你的集群就是这个)

# 初始化成功后,会输出两个关键信息:
# 1. 配置kubectl的命令(让当前用户能操作集群)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# 2. Node节点加入集群的命令(类似:kubeadm join 10.0.0.1:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx)

步骤 2:部署 CNI 网络插件(必须,否则 Pod 无法通信) kubeadm 不会自动部署网络插件,需要手动安装(以 flannel 为例):

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.22.0/Documentation/kube-flannel.yml

步骤 3:Node 节点加入集群 在 Node 节点执行 Master 初始化成功后输出的kubeadm join命令:

kubeadm join 10.0.0.1:6443 \
  --token abcdef.0123456789abcdef \
  --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

步骤 4:验证集群部署成功

# 查看节点状态(Ready表示正常)
kubectl get nodes

# 查看控制平面组件(都是Running状态)
kubectl get pods -n kube-system

文章作者: 楚少爱看雪
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 楚少爱看雪
学习 Study
喜欢就支持一下吧