温馨提示×

Kubernetes如何在Ubuntu上扩展

小樊
38
2025-11-02 17:35:20
栏目: 智能运维

Kubernetes在Ubuntu上的扩展方法
Kubernetes在Ubuntu上的扩展主要分为节点扩展(水平/垂直)和Pod自动扩缩容两类,以下是详细操作步骤及注意事项:

一、节点扩展(增加集群资源)

节点扩展是通过添加新节点或调整现有节点资源来提升集群承载能力的方式,分为水平扩展(添加节点)垂直扩展(增加节点资源)

1. 水平扩展:添加新节点到集群

水平扩展是最常见的扩展方式,通过添加新Ubuntu节点(物理机或虚拟机)来扩大集群规模,步骤如下:

  • 准备新节点:选择一台Ubuntu服务器(建议满足Kubernetes最低硬件要求:2核CPU、2GB以上内存、足够磁盘空间),安装Ubuntu系统并更新软件包。
  • 安装必要组件:在新节点上安装Docker(容器运行时)和Kubernetes核心组件(kubelet、kubeadm、kubectl)。以Ubuntu 22.04为例,命令如下:
    sudo apt-get update sudo apt-get install -y docker.io # 安装Docker sudo systemctl enable --now docker 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 # 安装Kubernetes组件 sudo apt-mark hold kubelet kubeadm kubectl # 锁定组件版本,避免意外升级 
  • 获取集群加入凭证:在现有Kubernetes主节点(Master)上执行以下命令,生成加入集群的命令(包含Token和CA证书哈希):
    kubeadm token create --print-join-command 
    输出示例:sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890 --discovery-token-ca-cert-hash sha256:1234567890abcdef
  • 新节点加入集群:将上述命令复制到新节点终端执行,等待节点成功加入。
  • 验证节点状态:回到主节点,执行以下命令查看节点列表,确认新节点状态为Ready(表示节点已成功加入集群并可接收Pod调度):
    kubectl get nodes 
  • 部署网络插件(可选):若集群未安装网络插件(如Calico、Flannel),需在新节点上部署。以Calico为例,执行:
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 
    部署完成后,网络插件会自动为新节点配置网络,确保Pod间通信正常。

2. 垂直扩展:增加现有节点资源

垂直扩展是通过调整现有Ubuntu节点的资源限制(如CPU、内存)来提升节点承载能力,适用于节点硬件可升级的场景,步骤如下:

  • 编辑kubelet配置文件:修改节点上的kubelet配置文件(通常位于/var/lib/kubelet/config.yaml),调整cpuManagerPolicy(CPU管理策略)或resourceLimits(资源限制)。例如,将CPU管理策略改为static(静态策略,允许Pod独占CPU核心):
    cpuManagerPolicy: static 
  • 重启kubelet服务:修改配置后,重启kubelet使配置生效:
    sudo systemctl restart kubelet 
  • 注意事项:垂直扩展需确保节点硬件支持(如CPU核心数、内存容量足够),且操作可能导致节点短暂重启,建议在业务低峰期执行。

二、Pod自动扩缩容(Horizontal Pod Autoscaler, HPA)

Pod自动扩缩容是根据应用负载(如CPU、内存使用率)动态调整Pod副本数量的机制,适用于需要弹性伸缩的应用场景(如Web服务、批处理任务)。

  • 前提条件:需提前部署Metrics Server(收集集群资源指标的工具),可通过以下命令安装:
    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 
  • 创建HPA资源:通过kubectl autoscale命令或YAML文件创建HPA。以下命令示例表示:当your-application Deployment的Pod平均CPU使用率超过80%时,自动增加副本数(最多10个),最少保持1个:
    kubectl autoscale deployment your-application --cpu-percent=80 --min=1 --max=10 
    或通过YAML文件(hpa.yaml)创建:
    apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: your-application-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: your-application minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 80 
    应用HPA配置:
    kubectl apply -f hpa.yaml 
  • 验证HPA效果:通过以下命令查看HPA状态,确认Pod副本数是否根据负载自动调整:
    kubectl get hpa 
    若负载下降,HPA会自动减少Pod副本数;若负载上升,则增加副本数,确保应用性能稳定。

三、扩展注意事项

  • 网络配置:添加新节点前,需确保新节点与集群现有节点的防火墙规则允许Kubernetes通信(如6443端口,用于API Server通信;10250端口,用于kubelet通信)。
  • 证书一致性:若使用自签名证书,新节点的/etc/kubernetes/pki目录需与主节点保持一致(或通过kubeadm自动同步),否则无法通过认证。
  • 负载均衡:多Master节点场景下,需配置负载均衡器(如HAProxy、Nginx)代理API Server请求,避免单点故障。
  • 监控与日志:扩展后,建议使用Prometheus+Grafana监控集群资源使用情况,通过ELK或Loki收集应用日志,及时发现性能瓶颈。

0