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}')