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

时间:2020-09-30 07:41:31

标签: kubernetes google-kubernetes-engine kubectl kubernetes-deployment

我已经编写了一个bash脚本来在kubernetes集群上进行所有部署。 我有一个命令可以将所有部署比例缩放为零。 我面临的挑战是,我希望能够遍历所有部署并保存它们的名称和副本数,以便在缩减后将它们缩放回原始副本。

我该如何实现? 这是我到目前为止所做的。

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

2 个答案:

答案 0 :(得分:2)

您可以将输出保存到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

答案 1 :(得分:0)

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

   #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