GKE中cluster-autoscaler safe-to-evict注解配置位置解答
注解配置位置结论
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"注解无需配置在HorizontalPodAutoscaler(HPA)文件中:HPA仅负责动态调整目标工作负载的副本数,本身不定义Pod的元数据属性,配置在HPA资源上完全不会生效。- 注解需要配置在Deployment YAML文件的
spec.template.metadata.annotations路径下:Deployment的spec.template字段是其管理的所有Pod的生成模板,所有Pod级别的标签、注解都必须放在这个模板的元数据段,才会被注入到实际运行的业务Pod中,被GKE的集群自动扩缩容组件识别。
配置修改示例
你当前的Deployment配置里,spec.template.metadata段目前仅配置了labels字段,新增annotations块即可,对应修改片段如下:
# 省略Deployment上层无关字段 spec: # 省略replicas、selector等原有配置 template: metadata: labels: app.kubernetes.io/name: {{ include "graphql.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} # 在此处新增注解配置 annotations: cluster-autoscaler.kubernetes.io/safe-to-evict: "true" spec: # 保留原有volumes、containers、nodeSelector等所有配置不变
补充说明
- 该注解的作用是告知集群自动缩容器:对应Pod可以被安全驱逐,直接跳过「Pod挂载本地存储」「未配置足够PDB保障」的缩容阻塞校验。如果业务对可用性有明确SLO要求,建议额外配置匹配的PodDisruptionBudget规则,不要完全依赖该注解跳过所有安全校验,避免驱逐操作导致业务中断。
- 注意注解值必须为字符串格式的
"true",不要直接写布尔值true,否则会因为类型不匹配导致集群组件无法正确识别注解。
内容的提问来源于stack exchange,提问作者Kannan
相关产品推荐
相关产品推荐

