Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将kubernetes部署缩减到0,并缩减到原始副本集数量_Kubernetes_Google Kubernetes Engine_Kubectl_Kubernetes Deployment - Fatal编程技术网

将kubernetes部署缩减到0,并缩减到原始副本集数量

将kubernetes部署缩减到0,并缩减到原始副本集数量,kubernetes,google-kubernetes-engine,kubectl,kubernetes-deployment,Kubernetes,Google Kubernetes Engine,Kubectl,Kubernetes Deployment,我已经编写了一个bash脚本来获取kubernetes集群上的所有部署。 我有一个命令可以将所有部署扩展到零。 我面临的挑战是,我希望能够在所有部署中循环,并保存它们的名称和副本数量,以便在缩小比例后将它们恢复到原来的大小 我如何做到这一点? 这就是我到目前为止所做的 $ kubectl get deployments $ kubectl scale deploy -n default --replicas=0 --all 您可以将输出保存到bash数组中: declare -A arr f

我已经编写了一个bash脚本来获取kubernetes集群上的所有部署。 我有一个命令可以将所有部署扩展到零。 我面临的挑战是,我希望能够在所有部署中循环,并保存它们的名称和副本数量,以便在缩小比例后将它们恢复到原来的大小

我如何做到这一点? 这就是我到目前为止所做的

$ kubectl get deployments
$ kubectl scale deploy -n default  --replicas=0 --all

您可以将输出保存到bash数组中:

declare -A arr
for i in $(kubectl get deployment -o name)
do
  arr+=( [$i]="$(kubectl get $i -o=jsonpath='{.spec.replicas}')")
done
然后再次使用它来放大:

for key in ${!arr[@]}
do
  kubectl scale deploy $key --replicas=${arr[${key}]}
done

您可以为复制的上一个状态注释资源。然后,您可以使用以下命令更改副本

   #annotate first 
   kubectl get deploy -o jsonpath='{range .items[*]}{"kubectl annotate --overwrite deploy "}{@.metadata.name}{" previous-size="}{@.spec.replicas}{" \n"}{end}' | sh

   #scale to 0
   kubectl scale --replicas=0 $(kubectl get deploy -o name) 

   ## scaleback 
   kubectl get deploy -o jsonpath='{range .items[*]}{"kubectl scale deploy "}{@.metadata.name}{" --replicas="}{.metadata.annotations.previous-size}{"\n"}{end}' | sh

如果要在缩小后立即放大,则更好的选择是重新启动kubectl卷展栏。写了一句话“我已经为此实现了一个bash脚本。请检查它:”