温馨提示×

Debian下Kubernetes节点如何添加

小樊
60
2025-09-21 17:18:34
栏目: 智能运维

在Debian系统下向Kubernetes集群添加节点的步骤

1. 准备新节点

  • 系统要求:确保新节点满足Kubernetes的最低硬件配置(至少2核CPU、2GB内存、20GB磁盘空间)。
  • 网络配置:所有节点(包括主节点和新节点)之间需能通过IP互相通信,且具备静态IP地址。
  • 主机名与hosts文件:在新节点上使用hostnamectl设置主机名(如k8s-worker01),并在所有节点的/etc/hosts文件中添加节点IP与主机名的映射(例如:192.168.1.100 k8s-worker01),确保节点间能通过主机名解析。
  • 关闭Swap分区:Kubernetes要求禁用swap分区以避免kubelet运行异常。执行以下命令:
    sudo swapoff -a
    sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    
  • 配置Containerd运行时:Kubernetes默认使用containerd作为容器运行时,需安装并配置:
    sudo apt update
    sudo apt install -y containerd
    sudo mkdir -p /etc/containerd
    sudo containerd config default | sudo tee /etc/containerd/config.toml
    sudo systemctl restart containerd
    sudo systemctl enable containerd
    

2. 安装Kubernetes核心组件

  • 添加Kubernetes官方APT仓库:在所有节点上执行以下命令,添加Kubernetes软件源:
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt update
    
  • 安装kubelet、kubeadm、kubectl:安装Kubernetes核心工具包,并锁定版本以防止自动升级:
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    

3. 获取主节点的Join命令

  • 在主节点上生成Join命令:若主节点已初始化(通过kubeadm init),可直接获取加入命令;若未初始化,需先执行kubeadm init初始化集群。生成Join命令的步骤如下:
    sudo kubeadm token create --print-join-command
    
    输出结果类似:
    sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:186e7256966f0e2b3485a3b3ab15a0f1357195745e3d2fa6e9f386cfc24ecc5d
    
    注意:若Token过期,可在主节点上重新生成:
    sudo kubeadm token create
    sudo kubeadm certs certificate-key
    

4. 在新节点上执行Join命令

  • 将Join命令复制到新节点:将主节点生成的kubeadm join命令粘贴到新节点的终端,执行该命令。执行过程中,系统会自动下载集群配置、加入集群并完成节点注册。
    sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:186e7256966f0e2b3485a3b3ab15a0f1357195745e3d2fa6e9f386cfc24ecc5d
    

5. 验证节点是否成功加入

  • 在主节点上检查节点状态:使用kubectl命令查看集群中的节点列表,新节点应显示为Ready状态(表示已成功加入并准备好接收Pod调度):
    kubectl get nodes
    
    输出示例:
    NAME           STATUS   ROLES    AGE   VERSION
    k8s-master01   Ready    master   1d    v1.23.0
    k8s-worker01   Ready    <none>   10m   v1.23.0
    

注意事项

  • 网络插件要求:若集群未部署网络插件(如Calico、Flannel),新节点虽能加入但无法正常运行Pod。需提前部署网络插件(例如Calico):
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    
  • 防火墙配置:确保所有节点的防火墙允许Kubernetes相关端口通信(如6443/tcp用于API Server、10250/tcp用于kubelet等)。
  • 版本一致性:主节点与工作节点的Kubernetes版本需保持一致或兼容,避免因版本差异导致加入失败。

0