ลด cost บน Kubernetes Cluster ด้วย kube-downscaler
วันนี้มาแนะนำ tool ทำ schedule เพื่อเปิด/ปิดการใช้งาน workload ที่ไม่จำเป็นต้องเปิดใช้งานตลอดบน cluster เช่น เปิดใช้เฉพาะ work hours เท่านั้น โดยใช้คู่กับ cluster autoscale ของ kubernetes จะช่วยลดค่าใช้จ่ายได้เยอะมากนั่นเอง
Prerequisite
- Kubernetes Cluster ที่เปิดใช้ cluster autoscaler (ในที่นี้ใช้ GKE)
- kubectl : รายละเอียดการติดตั้ง https://kubernetes.io/docs/tasks/tools/install-kubectl/
Setup
โหลดและติดตั้ง deployment จาก kube-downscaler repository
git clone https://github.com/hjacobs/kube-downscaler.git
kubectl apply -f kube-downscaler/deploy/
Edit deployment เอา — dry-run ออกเพื่อใช้งาน downscale
การตั้ง default schedule
ตั้งค่า DEFAULT_UPTIME หรือ DEFAULT_DOWNTIME ใน configMap ของ kube-downscaler โดยจะ apply กับทุก deployment ยกเว้นใน namespace kube-system
การตั้ง time format
<WEEKDAY-FROM>-<WEEKDAY-TO-INCLUSIVE> <HH>:<MM>-<HH>:<MM> <TIMEZONE>
เรายังสามารถใช้ Annotation ตั้งค่า schedule ให้เฉพาะ deployment ที่เราต้องการได้ด้วย เช่น
kubectl annotate deploy <DEPLOYMENT> “downscaler/uptime=<TIME-FORMAT>”
หรือจะยกเว้นการ downscale ให้กับ deployment บางตัว เช่น
kubectl annotate deploy <DEPLOYMENT> “downscaler/exclude: true”
สามารถศึกษา option การใช้งานเพิ่มเติมได้ที่
https://github.com/hjacobs/kube-downscaler