Kubernetes节点池按时段配置咨询:非工作时段闲置节点自动关停降本
Kubernetes节点池时段配置与闲置缩容方案
核心问题解答
主流云厂商托管的Kubernetes节点池(比如GKE、AKS、EKS)完全支持按时段配置节点参数,也就是常说的「计划扩缩容」功能,既能满足你非工作时段节约成本的需求,又能避免把最小节点数设为0带来的启动等待问题。
具体实现办法
1. 按时段调整节点池的最小/最大节点数
不同云厂商的操作路径略有不同,但核心都是通过定时规则来修改节点池的关键参数:
- GKE:在节点池的扩缩容设置里直接添加「计划规则」,比如工作时段(9:00-18:00)把最小节点数设为5、最大设为20;非工作时段(18:00到次日9:00)把最小设为1、最大设为5。
- AKS:用
az aks nodepool schedule命令配置定时任务,或者在Azure门户里可视化设置时段对应的节点数范围。 - EKS:通过CloudWatch Events创建定时触发的任务,调用EKS API或者用
eksctl命令调整节点池的minSize和maxSize。
2. 设置节点闲置30分钟后自动关停
配合Cluster Autoscaler的缩容延迟参数,确保节点闲置满30分钟才会被处理:
- 如果你自己部署Cluster Autoscaler,启动时加上
--scale-down-unneeded-time=30m参数,意思是节点闲置30分钟后就会被判定为可关停;还可以加上--scale-down-delay-after-add=30m,避免刚启动的节点被误删。 - 要是用云厂商托管的Cluster Autoscaler(比如GKE、AKS自带的),直接在节点池的扩缩容配置里把「闲置缩容等待时间」设为30分钟就行。
3. 组合方案兼顾成本和业务体验
把计划扩缩容和闲置缩容搭配起来用效果最好:
- 工作时段:设置足够的最小节点数(比如匹配日常业务的最低负载需求),保证业务不用等节点启动;最大节点数按需设置,应对突发流量。
- 非工作时段:把最小节点数设为1(或者少量备用节点),最大节点数调低;同时开启30分钟闲置缩容,多余的闲置节点会自动关停,只留备用节点,既省成本,又不会出现完全冷启动的漫长等待。
自建集群的替代方案
如果是自己搭建的Kubernetes集群,可以这么搞:
- 用Kubernetes的CronJob定时执行
kubectl命令,修改节点池(或者MachineDeployment)的minReplicas和maxReplicas参数。 - 配置Cluster Autoscaler的缩容延迟参数,实现闲置30分钟后关停节点。
内容的提问来源于stack exchange,提问作者Atul Sureka
相关产品推荐
相关产品推荐

