集群自动调节器是一个功能强大的 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 复制的数量。