cle*_*ent 4 kubernetes google-kubernetes-engine kubectl kubernetes-deployment
我编写了一个 bash 脚本来获取 kubernetes 集群上的所有部署。我有一个命令可以将所有部署缩放为零。我面临的挑战是,我希望能够遍历所有部署并保存它们的名称和副本数量,以便在缩小后将它们缩放回原始。
我如何做到这一点?这就是我迄今为止所做的。
$ kubectl get deployments
$ kubectl scale deploy -n default --replicas=0 --all
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以为之前的复制状态注释资源。然后您可以使用以下命令更改副本。
#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
Run Code Online (Sandbox Code Playgroud)
您可以将输出保存到 bash 数组中:
declare -A arr
for i in $(kubectl get deployment -o name)
do
arr+=( [$i]="$(kubectl get $i -o=jsonpath='{.spec.replicas}')")
done
Run Code Online (Sandbox Code Playgroud)
然后再次使用它来扩大规模:
for key in ${!arr[@]}
do
kubectl scale deploy $key --replicas=${arr[${key}]}
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4369 次 |
| 最近记录: |