如何配置Kube-downscaler实现指定StatefulSet/Deployment缩容?
关于Kube-downscaler指定StatefulSet缩容的解决方案
一、精准指定单个/多个StatefulSet的方法
Kube-downscaler支持通过资源注解实现对特定StatefulSet的缩容控制,这是指定3-4个目标实例的最优方案:
- 给需要缩容的StatefulSet添加注解,直接复用你现有时间规则即可:
annotations: downscaler/force-downtime: "Sat-Sun 00:00-06:30 Asia/Kolkata,Mon-Fri 15:33-15:43 Asia/Kolkata" - 保留ConfigMap中的
INCLUDE_RESOURCES: "deployments,horizontalpodautoscalers,statefulsets",确保downscaler会扫描StatefulSet资源 - 只要目标StatefulSet不在
EXCLUDE_NAMESPACES列表中,无需修改排除规则
若需让部分StatefulSet豁免缩容,可添加注解:downscaler/exclude: "true"
二、INCLUDE_NAMESPACES配置失效的原因
你尝试的INCLUDE_NAMESPACES: "test"未生效,核心是Kube-downscaler的规则优先级:资源注解 > EXCLUDE_NAMESPACES > INCLUDE_NAMESPACES
- 现有配置中
EXCLUDE_NAMESPACES包含多个命名空间,若test不在排除列表内,需调整规则:- 若仅需
test命名空间内的资源被缩容,删除EXCLUDE_NAMESPACES配置,同时保留INCLUDE_NAMESPACES: "test" - 若要保留
EXCLUDE_NAMESPACES,需确保test不在排除列表中,且同时配置INCLUDE_NAMESPACES: "test"(但这种组合易引发规则冲突,不推荐)
- 若仅需
三、命名空间维度控制的ConfigMap示例
若坚持用命名空间方式实现,修改后的ConfigMap如下:
apiVersion: v1 kind: ConfigMap metadata: name: kube-downscaler data: DEFAULT_DOWNTIME: "Sat-Sun 00:00-06:30 Asia/Kolkata,Mon-Fri 15:33-15:43 Asia/Kolkata" INCLUDE_RESOURCES: "deployments,horizontalpodautoscalers,statefulsets" INCLUDE_NAMESPACES: "test" # 移除EXCLUDE_NAMESPACES,或确保test不在该列表中 # EXCLUDE_NAMESPACES: "kube-system, kube-downscaler, cert-manager, default, monitoring, operator, dev"
内容的提问来源于stack exchange,提问作者Alexy Pulivelil
相关产品推荐
相关产品推荐

