Kubernetes 集群扩容在 Ubuntu 上如何实现
导读:在 Ubuntu 上扩容 Kubernetes 集群的实操指南 一 前置条件与系统初始化 准备一台或多台新的 Ubuntu 20.04/22.04 主机,能与现有控制平面网络互通,建议内核不低于 4.4,并规划好主机名与 IP。 在所有节...
在 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 的常见前置条件,能显著提升节点加入与运行的稳定性。
- 关闭 Swap:
二 扩容 Worker 节点
- 在现有控制平面节点生成加入命令:
- 仅 Worker:
kubeadm token create --print-join-command - 如需同时扩容控制平面,先生成证书密钥:
sudo kubeadm init phase upload-certs --upload-certs,再创建 token 并打印加入命令(含 –control-plane --certificate-key 参数)。
- 仅 Worker:
- 将打印出的
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-certskubeadm token create --print-join-command(随后在命令后追加--control-plane --certificate-key < key>)
- 在新节点执行完整 join 命令,完成后在控制平面执行
kubectl get nodes与kubeadm token list、kubeadm certs check-expiration检查状态与证书有效期。 - 注意:单控制平面集群不建议直接扩容控制平面,应先改造为 HA 后再新增控制平面节点。
以上步骤与命令格式为 kubeadm 的标准做法,适用于 Ubuntu 上的 Kubernetes 控制平面扩容。
四 使用自动化工具 KubeKey 扩容(可选)
- 若集群由 KubeKey 部署,可直接修改原集群配置文件(如 spec.hosts 与 spec.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 驱动一致性。
这些验证与排错步骤可快速确认扩容是否成功,并定位常见故障点。
- Token 过期:重新创建
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kubernetes 集群扩容在 Ubuntu 上如何实现
本文地址: https://pptw.com/jishu/786646.html
