通过配置自动伸缩,您可以根据集群的实际负载情况,动态调整节点数量,从而优化资源利用率,降低成本。💰
自动伸缩器 (Horizontal Pod Autoscaler, HPA) 需要 Metrics Server 或 Prometheus 提供资源使用指标。确保它们正常运行。
使用以下命令检查 Metrics Server 的状态:
kubectl get deploy metrics-server -n kube-system
如果 Metrics Server 没有运行,您可能需要手动安装。 阿里云ACK通常已经默认安装,如果没有,参考阿里云官方文档安装
如果您使用 Prometheus,请确保已正确配置 Prometheus 收集 Kubernetes 集群的指标,并配置相应的 Service Discovery。
伸缩组是 ECS 实例的集合,自动伸缩服务会根据您的策略,自动添加或删除伸缩组中的实例。
节点池是 ACK 集群中管理 ECS 节点的逻辑单元。您需要将创建的伸缩组关联到节点池。
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:指定资源名称,例如 cpu 或 memory。target:定义伸缩的目标值。
type: Utilization:表示目标值为资源利用率。averageUtilization:指定平均利用率的目标值,例如 70 表示 70%。使用 kubectl apply -f hpa.yaml 命令创建 HPA。
可以通过以下方式验证自动伸缩是否生效:
kubectl get hpa my-app-hpa -n default
希望以上步骤能帮助您成功配置阿里云 ACK 集群的自动伸缩功能。🎉