ubuntu

Kubernetes 集群如何在 Ubuntu 上扩展

小樊
36
2025-11-09 01:45:06
栏目: 智能运维

Kubernetes集群在Ubuntu上的扩展方法

一、水平扩展(添加工作节点)

水平扩展是通过增加集群中的工作节点数量,提升集群整体资源容量和处理能力,适用于需要处理更多工作负载的场景。

1. 准备新节点

选择一台新的Ubuntu服务器(或虚拟机),确保其满足Kubernetes的最低硬件要求(建议至少2核CPU、2GB内存、20GB以上磁盘空间)。安装Ubuntu操作系统(推荐20.04及以上LTS版本),并完成系统更新:

sudo apt update && sudo apt upgrade -y

2. 安装必要组件

在新节点上安装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  # 锁定版本避免自动升级

3. 获取集群加入凭证

在主节点(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

4. 新节点加入集群

将主节点输出的kubeadm join命令复制到新节点,执行该命令:

sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 --discovery-token-ca-cert-hash sha256:1234567890abcdef

执行完成后,新节点会自动向主节点注册。

5. 验证节点状态

回到主节点,使用以下命令查看集群节点列表,确认新节点状态为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

6. (可选)部署网络插件

若集群未安装网络插件(如Calico、Flannel),需在新节点上部署以确保Pod间通信。以Calico为例:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

二、垂直扩展(增加节点资源)

垂直扩展是通过调整现有节点的资源配置(如CPU、内存上限),提升单个节点的处理能力,适用于已有节点资源不足的场景。

1. 编辑kubelet配置文件

修改节点上的kubelet配置文件(默认路径为/var/lib/kubelet/config.yaml),调整资源限制。例如,增加Pod的CPU上限:

cpuManagerPolicy: static
resourceLimits:
  cpu:
    hard: "4"  # 限制Pod最大可使用4核CPU
    soft: "2"  # 建议Pod使用的CPU上限

2. 重启kubelet服务

修改配置后,重启kubelet使变更生效:

sudo systemctl restart kubelet

三、自动扩展(HPA)

通过Horizontal Pod Autoscaler(HPA)实现Pod的自动扩缩容,根据CPU、内存等指标动态调整Pod副本数,适用于流量波动大的应用。

1. 创建HPA资源

使用以下命令创建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

2. 验证HPA状态

查看HPA资源详情,确认自动扩缩容策略已生效:

kubectl get hpa

输出示例:

NAME              REFERENCE                     TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
nginx-deployment  Deployment/nginx-deployment   45%/80%   1         10        3          5m

注意事项

  1. 网络配置:确保新节点与集群其他节点的防火墙允许Kubernetes通信(如6443端口用于API Server、10250端口用于kubelet API、30000-32767端口用于NodePort服务)。
  2. 证书一致性:若使用自签名证书,需确保新节点的/etc/kubernetes/pki目录与主节点一致,避免证书验证失败。
  3. 负载均衡:多Master节点场景需配置负载均衡器(如HAProxy、Nginx)代理API Server请求,提升集群高可用性。
  4. 备份与恢复:扩展前建议备份集群数据(如etcd数据库),避免操作失误导致数据丢失。

0
看了该问题的人还看了