TG客服

阿里云ACK集群如何配置自动伸缩,根据负载动态调整节点数量

⏱️2026-04-16 09:00 👁️7

阿里云 ACK 集群自动伸缩配置指南 🚀

通过配置自动伸缩,您可以根据集群的实际负载情况,动态调整节点数量,从而优化资源利用率,降低成本。💰

前提条件

  • 已创建阿里云容器服务 Kubernetes (ACK) 集群。
  • 已安装 Metrics Server 或 Prometheus 用于监控集群资源使用情况。 Metrics Server 通常作为 ACK 集群的默认组件安装。
  • 确保您的阿里云账号具有足够的权限来创建和管理伸缩组、ECS 实例等资源。🔑

配置步骤

1. 确认 Metrics Server 或 Prometheus 运行状态

自动伸缩器 (Horizontal Pod Autoscaler, HPA) 需要 Metrics Server 或 Prometheus 提供资源使用指标。确保它们正常运行。

Metrics Server

使用以下命令检查 Metrics Server 的状态:

kubectl get deploy metrics-server -n kube-system

如果 Metrics Server 没有运行,您可能需要手动安装。 阿里云ACK通常已经默认安装,如果没有,参考阿里云官方文档安装

Prometheus

如果您使用 Prometheus,请确保已正确配置 Prometheus 收集 Kubernetes 集群的指标,并配置相应的 Service Discovery。

2. 创建伸缩组 (Scaling Group)

伸缩组是 ECS 实例的集合,自动伸缩服务会根据您的策略,自动添加或删除伸缩组中的实例。

  1. 登录阿里云 ECS 控制台。
  2. 在左侧导航栏中,选择伸缩 > 伸缩组
  3. 点击创建伸缩组
  4. 填写伸缩组的基本信息:
    • 地域:选择您的 ACK 集群所在的地域。
    • 伸缩组名称:为您的伸缩组指定一个名称。
    • 最小实例数:伸缩组中保持的最小 ECS 实例数量。
    • 最大实例数:伸缩组中允许的最大 ECS 实例数量。
    • 期望实例数:伸缩组启动时,期望拥有的 ECS 实例数量。
    • VPC:选择您的 ACK 集群所在的 VPC。
    • 可用区:选择多个可用区,以提高可用性。
  5. 配置实例启动配置:
    • 您可以选择使用现有的启动模板,或者创建新的启动模板。
    • 启动模板定义了 ECS 实例的配置,例如镜像、实例规格、安全组等。
    • 请确保启动模板中的镜像已经预装了 Kubernetes 相关组件,例如 kubelet、kube-proxy。可以使用阿里云提供的 ACK 镜像,或者自定义镜像。
    • 指定实例规格时,请根据您的应用需求选择合适的规格。 建议选择计算型或内存型实例。
    • 配置安全组时,请确保允许 Kubernetes 集群的网络流量。
    • 重要: 确保启动模板配置了正确的角色权限,允许 ECS 实例加入 Kubernetes 集群。 通常需要授予 ECS 实例 `AliyunContainerServiceRole` 角色。
  6. 配置伸缩策略:
    • 选择 “手动调整” 或 “定时任务” 。 这里先选择 手动调整,后续在ACK里面配置根据CPU和内存自动调整策略。
  7. 点击确认,创建伸缩组。

3. 创建节点池 (NodePool)

节点池是 ACK 集群中管理 ECS 节点的逻辑单元。您需要将创建的伸缩组关联到节点池。

  1. 登录阿里云容器服务控制台。
  2. 选择您的 ACK 集群。
  3. 在左侧导航栏中,选择节点管理 > 节点池
  4. 点击创建节点池
  5. 填写节点池的基本信息:
    • 节点池名称:为您的节点池指定一个名称。
    • 可用区:选择多个可用区,以提高可用性。
    • 节点类型:选择弹性伸缩组
    • 伸缩组:选择您在步骤 2 中创建的伸缩组。
    • 实例配置: 选择您在步骤2里面创建的启动模板
    • Kubernetes 配置
      • 节点标签:您可以为节点添加标签,以便在 Kubernetes 中进行调度。
      • 污点:您可以为节点添加污点,以防止某些 Pod 调度到该节点上。
  6. 点击确认,创建节点池。

4. 配置 HPA (Horizontal Pod Autoscaler)

HPA 会根据 Pod 的资源使用情况,自动调整 Pod 的副本数量。您需要为您的 Deployment 或 ReplicaSet 创建 HPA 对象。

以下是一个 HPA 示例:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app-deployment
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 80

说明:

  • scaleTargetRef:指定要伸缩的目标 Deployment 或 ReplicaSet。
  • minReplicas:最小副本数。
  • maxReplicas:最大副本数。
  • metrics:定义伸缩的指标。
    • resource:表示基于资源使用情况进行伸缩。
    • name:指定资源名称,例如 cpumemory
    • target:定义伸缩的目标值。
      • type: Utilization:表示目标值为资源利用率。
      • averageUtilization:指定平均利用率的目标值,例如 70 表示 70%。

使用 kubectl apply -f hpa.yaml 命令创建 HPA。

5. 验证自动伸缩

可以通过以下方式验证自动伸缩是否生效:

  • 观察 HPA 的状态:
kubectl get hpa my-app-hpa -n default
  • 查看 Deployment 的副本数量是否根据负载情况自动调整。
  • 监控 ECS 实例数量是否根据负载情况自动调整。

最佳实践

  • 合理设置最小和最大实例数,避免资源浪费或服务中断。
  • 根据应用特点选择合适的伸缩指标,例如 CPU 利用率、内存利用率、QPS 等。
  • 逐步调整伸缩策略,找到最佳的伸缩参数。
  • 监控自动伸缩的效果,及时调整配置。

希望以上步骤能帮助您成功配置阿里云 ACK 集群的自动伸缩功能。🎉

国际云自助站点

我们提供一站式多云服务管理平台,支持阿里云国际、腾讯云国际、AWS(亚马逊云)和GCP(谷歌云)等主流国际云厂商。无论是新账户申请、余额充值,还是日常管理与监控,平台均可统一操作,大幅提升管理效率。同时支持余额预警、异常通知等推送功能,帮助用户实时掌握各云平台资源状态,防止因欠费导致业务中断。平台还支持多账号集中管理,适用于个人站长、跨境电商、开发团队等多场景使用需求,真正实现高效、安全、灵活的多云资源协同管理。

热门文章
更多>