คำสั่งลบ ReplicaSets ของเก่าใน K8S

คำสั่งลบ ReplicaSets ของเก่าใน K8S

ทุกครั้งที่มีการสั่ง kubectl rollout restart เพื่อทำการ deploy ใหม่มันจะทำการสร้าง Replicasets ขึ้นมาใหม่ให้ และของเก่าก็ยังคงอยู่เสมอ ทำให้ถ้าเรา deploy บ่อยๆ พอเราสั่ง kubectl get replicasets ดูมันจะมีหลายเวอร์ชั่นมากในแต่ละ deployment ซึ่งผมไม่ค่อยชอบเท่าไร มันดูรก ฮาๆ

เลยไปหาคำสั่งในการลบมันออกไป นั้นก็คือ

$ kubectl get rs -A -o wide | tail -n +2 | awk '{if ($3 + $4 + $5 == 0) print "kubectl delete rs -n "$1, $2 }' | sh

เพียงเท่านี้มันก็จะลบ replicasets ออกมาเลยที่เคยถูกสร้างมาและไม่ได้ใช้แล้ว ลองไปปรับแต่งคำสั่งกันเอาเองต่อได้นะ เช่น

$ kubectl get -n <NAMESPACE> rs -A -o wide | tail -n +2 | awk '{if ($3 + $4 + $5 == 0) print "kubectl delete rs -n "$1, $2 }' | sh

อันนี้ก็จะลบเฉพาะ namespace ที่กำหนด

หรือ

$ kubectl get -n <NAMESPACE> rs -A -o wide -l <LABLE>=<VALUE> | tail -n +2 | awk '{if ($3 + $4 + $5 == 0) print "kubectl delete rs -n "$1, $2 }' | sh

เติม -l <LABLE>=<VALUE> ก็จะทำการลบเฉพาะที่มี lable ที่กำหนด

Source: https://wildwolf.name/how-to-delete-old-replicasets-in-kubernetes/

Arnon Kijlerdphon

Arnon Kijlerdphon

Board game & Plant-based & Minimalist, it's all my life.
Bangkok, Thailand