将kubernetes部署缩减到0,并缩减到原始副本集数量
我已经编写了一个bash脚本来获取kubernetes集群上的所有部署。 我有一个命令可以将所有部署扩展到零。 我面临的挑战是,我希望能够在所有部署中循环,并保存它们的名称和副本数量,以便在缩小比例后将它们恢复到原来的大小 我如何做到这一点? 这就是我到目前为止所做的将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
$ 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脚本。请检查它:”