我已经编写了一个bash脚本来在kubernetes集群上进行所有部署。 我有一个命令可以将所有部署比例缩放为零。 我面临的挑战是,我希望能够遍历所有部署并保存它们的名称和副本数,以便在缩减后将它们缩放回原始副本。
我该如何实现? 这是我到目前为止所做的。
$ kubectl get deployments
$ kubectl scale deploy -n default --replicas=0 --all
答案 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