缩小库伯内特豆荚的规模

我在吸毒

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

停止我所有的逃生舱。请让我知道,如果有更好的方法来降低所有运行吊舱零保持配置,部署等..。完好无损,这样我以后就可以根据需要扩大规模了。

155523 次浏览

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.

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

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.

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
  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

The solution is pretty easy and straightforward

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

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 svc | awk '{print $1}' | xargs kubectl scale deploy --replicas=0