Ubuntu上Kubernetes集群扩展指南
Kubernetes集群扩展主要分为水平扩展(添加节点)、**垂直扩展(增加节点资源)和自动扩展(HPA)**三类,以下是针对Ubuntu系统的详细操作步骤及注意事项:
水平扩展是通过增加工作节点提升集群整体容量,适用于需要处理更多工作负载的场景。
# 更新软件包并安装Docker(容器运行时) sudo apt-get update sudo apt-get install -y docker.io sudo systemctl enable --now docker # 安装kubeadm、kubelet、kubectl(Kubernetes核心工具) sudo apt-get install -y apt-transport-https curl 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-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本避免自动升级 在**主节点(Master)**上执行以下命令,生成用于新节点加入集群的命令:
kubeadm token create --print-join-command 输出示例:
sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 --discovery-token-ca-cert-hash sha256:1234567890abcdef... 注意:请复制完整命令(包含IP、端口、token及证书哈希),后续需在新节点上执行。
将主节点生成的kubeadm join命令粘贴到新节点终端,执行后等待节点初始化完成:
sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 --discovery-token-ca-cert-hash sha256:1234567890abcdef... 回到主节点,运行以下命令查看节点列表,确认新节点状态为Ready:
kubectl get nodes 输出示例:
NAME STATUS ROLES AGE VERSION k8s-master-01 Ready master 10d v1.28.2 k8s-worker-03 Ready <none> 5m v1.28.2 # 新节点已加入 若集群未安装网络插件(如Calico),需在新节点上部署以确保Pod间通信:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 等待插件状态变为Running:
kubectl get pods -n calico-system 垂直扩展是通过调整现有节点的资源限制(如CPU、内存)提升单节点承载能力,适用于节点资源不足的场景。
修改节点上的kubelet配置文件(默认路径/var/lib/kubelet/config.yaml),调整资源分配策略:
# 示例:开启CPU管理策略为static(允许Pod独占CPU核心) cpuManagerPolicy: static # 示例:调整Pod资源限制(需根据节点实际资源调整) resolvConf: /run/systemd/resolve/resolv.conf sudo systemctl daemon-reload sudo systemctl restart kubelet 注意:垂直扩展需确保节点硬件支持(如CPU核心数足够),且操作可能导致节点短暂不可用,建议在低负载时段进行。
HPA可根据Pod的CPU/内存使用率自动调整副本数量,实现动态扩缩容,适用于流量波动大的应用。
HPA依赖Metrics Server收集资源指标,若未安装,执行以下命令:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 等待Metrics Server启动:
kubectl get pods -n kube-system | grep metrics-server 通过kubectl autoscale命令或YAML文件创建HPA。以下命令示例为your-application Deployment设置自动扩缩容规则:
kubectl autoscale deployment your-application --cpu-percent=80 --min=1 --max=10 参数说明:
--cpu-percent=80:当Pod平均CPU使用率超过80%时触发扩容;--min=1:最小副本数为1;--max=10:最大副本数为10。查看HPA详情,确认其是否正常工作:
kubectl get hpa 输出示例:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE your-application Deployment/your-application 45%/80% 1 10 3 10m 说明:TARGETS列表示当前Pod的CPU使用率(45%)与目标阈值(80%)的比值,若超过阈值,HPA会自动增加副本数。
/etc/kubernetes/pki目录下的证书复制到相同路径,确保证书信任链有效。通过以上步骤,您可快速扩展Ubuntu上的Kubernetes集群,满足业务增长需求。操作前建议备份重要数据,并在测试环境验证流程的正确性。