Clean up "Replica Sets" when updating deployments?
Every time a deployment gets updated, a new replica set is added to a long list. Should the old rs be cleaned?
Solution 1:
Removing old replicasets is part of the Deployment object, but it is optional. You can set .spec.revisionHistoryLimit
to tell the Deployment how many old replicasets to keep around.
Here is a YAML example:
apiVersion: apps/v1
kind: Deployment
# ...
spec:
# ...
revisionHistoryLimit: 0 # Default to 10 if not specified
# ...
Solution 2:
If you want to clean it manually you can just paste that in your console
kubectl delete $(kubectl get all | grep replicaset.apps | grep "0 0 0" | cut -d' ' -f 1)
This only works because of the way kubectl get all
displays resources. It's a cheap solution but it's not that big an issue either.
Edit
Look at Joe Eaves's solution, it's similar but less dependent on the syntax (ignores white spaces at least)
Solution 3:
A revision on Kévin's post above as I can't comment yet :D
AWK lets us ignore the spacing!
kubectl delete $(kubectl get all | grep replicaset.apps | awk '{if ($2 + $3 + $4 == 0) print $1}')