温馨提示×

Kubernetes在Ubuntu上的扩展性如何实现

小樊
46
2025-11-23 00:06:37
栏目: 智能运维

Kubernetes在Ubuntu上的扩展性实现

一、扩展层次与总体思路

  • Ubuntu 上,Kubernetes 的扩展通常分为两个层面:
    • 集群规模扩展:增加控制平面与工作节点的数量,提升整体容量与可靠性。
    • 工作负载扩展:在现有集群中对应用进行手动扩缩容自动扩缩容(HPA/VPA),按需增减 Pod 副本或资源配额。

二、集群规模扩展

  • 使用 kubeadm 扩容节点(通用 Ubuntu 场景)

    • 准备新的 Ubuntu 节点(网络互通、SSH 可达、系统参数就绪)。
    • 在节点上安装容器运行时与 kubeadm/kubelet/kubectl(保持与控制平面版本一致)。
    • 在控制平面生成加入命令:sudo kubeadm token create --print-join-command
    • 在新节点执行加入命令:sudo kubeadm join <control-plane-host>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    • 验证:kubectl get nodes 确认新节点 Ready。以上流程适用于从单机到多节点、再到更大规模集群的演进。
  • 使用 Juju + MAAS 管理集群节点(自动化与资源约束)

    • 扩容控制平面:juju add-unit kubernetes-master -n 3(按需增减单元数)。
    • 扩容工作节点:juju add-unit kubernetes-worker -n 2;可同时设定资源约束(如:--constraints "mem=6G cores=2"),或统一设置:juju set-constraints kubernetes-worker cores=2 mem=6G root-disk=16G
    • 安全缩容:先对节点执行 juju run-action kubernetes-worker/3 pause --wait,待工作负载迁移后再移除,降低业务中断风险。

三、工作负载扩展

  • 手动扩缩容

    • 快速调整副本数:kubectl scale --replicas=<数量> deployment/<应用名>,适合突发流量或维护窗口的即时调整。
  • 自动扩缩容

    • HPA(Horizontal Pod Autoscaler):基于 CPU/内存 或自定义指标自动增减 Pod 副本。示例(CPU 平均利用率目标 50%,副本范围 3–10):
      apiVersion: autoscaling/v2beta2
      kind: HorizontalPodAutoscaler
      metadata:
        name: your-app-hpa
      spec:
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: your-app
        minReplicas: 3
        maxReplicas: 10
        metrics:
        - type: Resource
          resource:
            name: cpu
          target:
            type: Utilization
            averageUtilization: 50
      
      应用:kubectl apply -f hpa.yaml。HPA 适合应对周期性或不可预期流量波动。

四、实践建议

  • 规划节点资源与角色:为控制平面与工作节点设置合理的 CPU/内存/磁盘 约束,避免单点瓶颈;必要时使用污点与容忍度、节点亲和性将关键负载调度到指定节点池。
  • 扩缩容顺序与稳定性:扩容时先扩容节点再扩容应用;缩容时先缩减应用或驱逐 Pod,再下线节点,配合 draincordon 避免业务中断。
  • 监控与容量阈值:结合 Metrics ServerPrometheusGrafana 设置告警与扩缩容阈值,确保 HPA 决策基于真实负载。
  • 网络与存储:提前规划 Pod CIDR、服务网段与持久化存储类,避免扩容后网络或存储成为新的瓶颈。

0