温馨提示×

Kubernetes 集群扩容在 Ubuntu 上如何实现

小樊
37
2026-01-05 05:00:57
栏目: 智能运维

在 Ubuntu 上扩容 Kubernetes 集群的实操指南

一 前置条件与系统初始化

  • 准备一台或多台新的 Ubuntu 20.04/22.04 主机,能与现有控制平面网络互通,建议内核不低于 4.4,并规划好主机名与 IP。
  • 在所有节点(含新节点)完成基础初始化:
    • 关闭 Swap:sudo swapoff -a 并注释 /etc/fstab 中的 swap 行。
    • 加载必要内核模块并开启桥接转发(按实际发行版与容器运行时配置)。
    • 安装并启动容器运行时(如 containerd),配置 cgroups 驱动一致。
    • 安装 kubeadm/kubelet/kubectl(版本与集群保持一致),设置开机自启:sudo systemctl enable --now kubelet
    • 确保节点时间同步(如 chrony)。
      这些步骤是 Ubuntu 上部署与扩容 Kubernetes 的常见前置条件,能显著提升节点加入与运行的稳定性。

二 扩容 Worker 节点

  • 在现有控制平面节点生成加入命令:
    • 仅 Worker:kubeadm token create --print-join-command
    • 如需同时扩容控制平面,先生成证书密钥:sudo kubeadm init phase upload-certs --upload-certs,再创建 token 并打印加入命令(含 –control-plane --certificate-key 参数)。
  • 将打印出的 kubeadm join ... 命令复制到新节点执行。
  • 在控制平面验证:kubectl get nodes -o wide,确认新节点状态为 Ready
  • 可选:为新节点打标签并配置污点/容忍,用于业务亲和或隔离:kubectl label nodes <node-name> node-role.kubernetes.io/worker=kubectl taint nodes <node-name> key=value:NoSchedule
    上述流程适用于 Ubuntu 环境,且便于批量复制命令在多台新节点上并行执行。

三 扩容 Control Plane 节点(高可用)

  • 前提:当前集群为 HA(多控制平面),并且已通过 kubeadm init phase upload-certs --upload-certs 上传了控制平面证书。
  • 在现有控制平面节点生成加入命令(包含 –control-plane–certificate-key):
    • sudo kubeadm init phase upload-certs --upload-certs
    • kubeadm token create --print-join-command(随后在命令后追加 --control-plane --certificate-key <key>
  • 在新节点执行完整 join 命令,完成后在控制平面执行 kubectl get nodeskubeadm token listkubeadm certs check-expiration 检查状态与证书有效期。
  • 注意:单控制平面集群不建议直接扩容控制平面,应先改造为 HA 后再新增控制平面节点。
    以上步骤与命令格式为 kubeadm 的标准做法,适用于 Ubuntu 上的 Kubernetes 控制平面扩容。

四 使用自动化工具 KubeKey 扩容(可选)

  • 若集群由 KubeKey 部署,可直接修改原集群配置文件(如 spec.hostsspec.roleGroups.worker 增加新节点),然后执行 ./kk add nodes -f <config.yaml> 完成扩容。
  • 该方式同样适用于运行在 Ubuntu/CentOS 等主流系统上的集群,能显著简化多节点批量扩容流程。
    KubeKey 的节点扩缩实践在生产环境中被广泛采用,适合标准化交付与快速扩容。

五 验证与常见问题

  • 验证清单:
    • 节点状态:kubectl get nodes(应为 Ready
    • 系统组件:kubectl get pods -n kube-system(如 kube-proxy、coredns 等 Running)
    • 集群信息:kubectl cluster-info
  • 常见问题与处理要点:
    • Token 过期:重新创建 kubeadm token create --print-join-command
    • 证书密钥缺失(扩容控制平面):先执行 kubeadm init phase upload-certs --upload-certs 再生成 join 命令。
    • 容器运行时与 kubelet 版本不一致:统一 kubeadm/kubelet/kubectl 与容器运行时版本。
    • 节点 NotReady:检查容器运行时、网络插件(如 Calico/Flannel)、kubelet 服务与 cgroups 驱动一致性。
      这些验证与排错步骤可快速确认扩容是否成功,并定位常见故障点。

0