需求
有个报表服务每个月月底要批量生成报表,当前服务2个pod,请求有点过载,需要再扩容4个pod,然后等下个月的5号再缩回2个pod。
实现
通过crontab即可实现。
scale_deployment.sh
#!/bin/bash
# 脚本名称: scale_deployment.sh
# 用法: ./scale_deployment.sh [scaleup|scaledown]
DEPLOYMENT="deployment"
NAMESPACE="test" # 替换对应命名空间
case $1 in
scaleup)
# 扩容到6个副本
kubectl scale deployment $DEPLOYMENT --replicas=6 -n $NAMESPACE
echo "$(date): 已扩容到6个副本"
;;
scaledown)
# 缩容到2个副本
kubectl scale deployment $DEPLOYMENT --replicas=2 -n $NAMESPACE
echo "$(date): 已缩容到2个副本"
;;
*)
echo "用法: $0 [scaleup|scaledown]"
exit 1
;;
esac
crontab
# 每月月底前一天晚上11点59分扩容(注意:月底可能是28、29、30或31号)
59 23 28-31 * * [ $(date -d tomorrow +\%d) -eq 1 ] && /root/scale_deployment.sh scaleup
# 每月5号凌晨0点5分缩容
5 0 5 * * /root/scale_deployment.sh scaledown

