如何一次重新启动 1000 个 pod



我们有 1000 个 pod 为我们的应用程序运行。由于某种原因,我们需要重新启动 100 个 pod。

有什么方法可以在 kubernetes 中使用 kubectl 或任何其他工具做到这一点。请指教。它应该是纯 pod 重新启动。

单程

kubectl scale deploymennt <your-deployment-goes-here> --replicas=0

然后

kubectl scale deploymennt <your-deployment-goes-here> --replicas=1000

另一种方式:

编写一个脚本,以便:

  1. 将获取属于特定部署的所有活动 Pod 的列表
  2. 在循环中发出 kubectl 删除 pod

另一种方式(如果您的 pod 属于专用命名空间"foo",则有效(:

kubectl delete --all pods --namespace=foo

如果所有 Pod 都属于特定的命名空间,则可以使用kubectl delete pods --all --namespace=foo重新创建它们(这可能会导致停机(。

如果所有 Pod 都由同一部署控制,则可以使用kubectl rollout restart deployment/my-deployment-name.† 触发滚动重启

编辑一些部署琐碎的值也会触发所有受控 Pod 的滚动更新(可能没有停机时间((例如,将terminationGracePeriodSeconds30更改为31(。

如果 Pod 来自多个不同的部署,下面是一个 bash 脚本,该脚本按命名空间"刷新"所有部署中的所有 Pod。

rollout restart仅在 Kubernetes v1.15+ 上可用

您可以使用选择器执行此操作。请注意,这是删除 Pod,因此您需要确保它们使用更高级别的构造(如部署(运行。并确保您的选择器与您不想触摸的豆荚不匹配。

kubectl delete pods -l name=myLabel

重新启动群集中的所有部署(多个命名空间(

kubectl get deployments --all-namespaces | tail +2 | awk '{ cmd=sprintf("kubectl rollout restart deployment -n %s %s", $1, $2) ; system(cmd) }'

最新更新