Scale down Kubernetes pods

Kubernetes

Kubernetes Problem Overview


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.

Kubernetes Solutions


Solution 1 - Kubernetes

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.

Solution 2 - Kubernetes

The solution is pretty easy and straightforward

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

Solution 3 - Kubernetes

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

Solution 4 - Kubernetes

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

Solution 5 - Kubernetes

  kubectl get deployments
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
app-gke   3/3     3            3           13m

  kubectl scale deploy app-gke --replicas=5
deployment.extensions/app-gke 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

Solution 6 - Kubernetes

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.

Solution 7 - Kubernetes

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

Solution 8 - Kubernetes

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPPK View Question on Stackoverflow
Solution 1 - KubernetesmdanielView Answer on Stackoverflow
Solution 2 - KubernetesVivek RaveendranView Answer on Stackoverflow
Solution 3 - KubernetesR0MARI0View Answer on Stackoverflow
Solution 4 - KubernetestimboslicecreativeView Answer on Stackoverflow
Solution 5 - KubernetesTiago MediciView Answer on Stackoverflow
Solution 6 - Kuberneteselhay efratView Answer on Stackoverflow
Solution 7 - KubernetesakahunaView Answer on Stackoverflow
Solution 8 - KubernetesSaif HaiderView Answer on Stackoverflow