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