คำสั่งลบ 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/