Kubernetes集群在Ubuntu上的扩展方法
水平扩展是通过增加集群中的工作节点数量,提升集群整体资源容量和处理能力,适用于需要处理更多工作负载的场景。
选择一台新的Ubuntu服务器(或虚拟机),确保其满足Kubernetes的最低硬件要求(建议至少2核CPU、2GB内存、20GB以上磁盘空间)。安装Ubuntu操作系统(推荐20.04及以上LTS版本),并完成系统更新:
sudo apt update && sudo apt upgrade -y
在新节点上安装Docker(容器运行时)和Kubernetes核心组件(kubeadm、kubelet、kubectl):
# 安装Docker
sudo apt install -y docker.io
sudo systemctl enable --now docker
# 添加Kubernetes软件源并安装组件
sudo apt 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 update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本避免自动升级
在主节点(Master)上执行以下命令,生成用于新节点加入集群的命令(包含Token和CA证书哈希):
kubeadm token create --print-join-command
输出示例:
kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 --discovery-token-ca-cert-hash sha256:1234567890abcdef
将主节点输出的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> 1m v1.28.2
若集群未安装网络插件(如Calico、Flannel),需在新节点上部署以确保Pod间通信。以Calico为例:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
垂直扩展是通过调整现有节点的资源配置(如CPU、内存上限),提升单个节点的处理能力,适用于已有节点资源不足的场景。
修改节点上的kubelet配置文件(默认路径为/var/lib/kubelet/config.yaml),调整资源限制。例如,增加Pod的CPU上限:
cpuManagerPolicy: static
resourceLimits:
cpu:
hard: "4" # 限制Pod最大可使用4核CPU
soft: "2" # 建议Pod使用的CPU上限
修改配置后,重启kubelet使变更生效:
sudo systemctl restart kubelet
通过Horizontal Pod Autoscaler(HPA)实现Pod的自动扩缩容,根据CPU、内存等指标动态调整Pod副本数,适用于流量波动大的应用。
使用以下命令创建HPA,设置当Pod CPU使用率超过80%时,自动将副本数从1扩展到10:
kubectl autoscale deployment <deployment-name> --cpu-percent=80 --min=1 --max=10
示例(针对名为nginx-deployment的Deployment):
kubectl autoscale deployment nginx-deployment --cpu-percent=80 --min=1 --max=10
查看HPA资源详情,确认自动扩缩容策略已生效:
kubectl get hpa
输出示例:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx-deployment Deployment/nginx-deployment 45%/80% 1 10 3 5m
/etc/kubernetes/pki目录与主节点一致,避免证书验证失败。