我们有 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
另一种方式:
编写一个脚本,以便:
- 将获取属于特定部署的所有活动 Pod 的列表
- 在循环中发出 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 的滚动更新(可能没有停机时间((例如,将terminationGracePeriodSeconds
从30
更改为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) }'