Scale down Kubernetes pods

I am using

kubectl scale --replicas=0 -f deployment.yaml

to stop all my running pods. Please let me know if there are better ways to bring down all running pods to Zero keeping configuration, deployments etc.. intact, so that I can scale up later as required.

1

8 Answers

You are doing the correct action; traditionally the scale verb is applied just to the resource name, as in kubectl scale deploy my-awesome-deployment --replicas=0, which removes the need to always point at the specific file that describes that deployment, but there's nothing wrong (that I know of) with using the file if that is more convenient for you.

1

The solution is pretty easy and straightforward

kubectl scale deploy -n <namespace> --replicas=0 --all 
3

Here we go. Scales down all deployments in a whole namespace:

kubectl get deploy -n <namespace> -o name | xargs -I % kubectl scale % --replicas=0 -n <namespace>

To scale up set --replicas=1 (or any other required number) accordingly

4

Use the following to scale down/up all deployments and stateful sets in the current namespace. Useful in development when switching projects.

kubectl scale statefulset,deployment --all --replicas=0

Add a namespace flag if needed

kubectl scale statefulset,deployment -n mynamespace --all --replicas=0
 kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
app-gke 3/3 3 3 13m kubectl scale deploy app-gke --replicas=5 scaled
kubectl get pods
NAME READY STATUS RESTARTS AGE
app-gke-7b768cd6d7-b25px 2/2 Running 0 11m
app-gke-7b768cd6d7-glj5v 0/2 ContainerCreating 0 4s
app-gke-7b768cd6d7-jdt6l 2/2 Running 0 11m
app-gke-7b768cd6d7-ktx87 2/2 Running 0 11m
app-gke-7b768cd6d7-qxpgl 0/2 ContainerCreating 0 4s

enter image description here

If you need more granularity with pipes or grep, here is another shell solution:

for i in $(kubectl get deployments | grep -v NAME | grep -v app | awk '{print $1}'); do kubectl scale --replicas=2 deploy $i; done

If you want generic patch:

namespace=devops-ci-dev
kubectl get deployment -n ${namespace} --no-headers| awk '{print $1}' | xargs -I elhay kubectl patch deployment -n ${namespace} -p '{"spec": {"replicas": 1}}' elhay 

Change namespace=devops-ci-dev, to be your name space.

kubectl get svc | awk '{print $1}' | xargs kubectl scale deploy --replicas=0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like