集群自动调节器是一个功能强大的 Kubernetes 组件,可根据应用程序的资源使用情况自动调整集群中的节点数量。它能确保集群有足够的资源高效运行工作负载,同时在资源利用率不足时缩减规模,最大限度地降低成本。


以下代码片段演示了如何在 Kubernetes 集群中部署 Cluster Autoscaler。其中包括必要的配置和部署命令。

【代码清单】

apiVersion: apps/v1
kind: Deployment
metadata:
 name: cluster-autoscaler
 namespace: kube-system
spec:
 replicas: 1
 selector:
  matchLabels:
   app: cluster-autoscaler
 template:
  metadata:
   labels:
     app: cluster-autoscaler
  spec:
   containers:
   - name: cluster-autoscaler
     image: k8s.gcr.io/cluster-autoscaler:v1.21.0
     command:
     - ./cluster-autoscaler
     - --cloud-provider=gce
     - --nodes=1:10:YOUR_NODE_POOL_NAME
     - --v=4
     env:
     - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /etc/gce-service-account/key.    volumeMounts:
     - name: gce-service-account
      mountPath: /etc/gce-service-account
   volumes:
   - name: gce-service-account
     secret:
      secretName: gce-service-account

【执行结果】

部署命令不会直接显示输出,但可以通过运行
kubectl get pods -n kube-system
你应该能看到 cluster-autoscaler pod 正在运行。

群集自动分量器通过监控 Pod 的资源请求来工作。如果检测到 pod 因资源不足而待处理,它会向群集添加节点。反之,如果发现节点利用率不足,而其工作负载可以转移到其他节点,它就会减少节点数量。这种动态调整有助于在控制成本的同时保持性能。

要使用群集自动分级器,需要指定云提供商和节点池配置。上面的示例使用 Google Cloud 作为提供商,但 AWS、Azure 和其他提供商也有类似的配置。

【小知识】

群集自动分级器只有在底层基础架构支持的情况下才能进行扩展(例如,如果您使用的是云提供商)。

它需要特定的 IAM 权限来管理云环境中的资源。

Cluster Autoscaler 独立于 Horizontal Pod Autoscaler 运行,后者会根据 CPU 或内存使用情况扩展 Pod 复制的数量。