首页 > 解决方案 > 在 K8s 中重启 n 个 pod

问题描述

我正在开发一个在 Kubernetes 集群上运行的应用程序。我想按顺序手动重新启动 n 个 pod。我们可以这样做吗?会kubectl scale <options>在这里工作吗?

标签: kuberneteskubectl

解决方案


答案是肯定的,您可以重新启动特定部署的 10 个 Pod 中的 5 个。虽然这不会是一个单一的命令。

正如您正确假设的那样,kubectl scale它将在这里为您提供帮助。

重新启动 10 个 Pod 中的 5 个包含 2 个操作:

  1. 将部署从 10 个 pod 缩减到 5 个

    kubectl scale deployment deployment-name --replicas=5
    
  2. 将部署从 5 个 Pod 扩大到 10 个:

    kubectl scale deployment deployment-name --replicas=10
    

您还可以删除确切的 Pod,kube-controller-manager其中的deployment/replicaset控制器将确保desired状态与确切的状态匹配,因此丢失的 Pod 将自动重新调度。


但是遵循最佳实践(感谢@DavidMaze),理想的情况是重新启动整个部署。这可以通过以下命令完成:

kubectl rollout restart deployment deployment-name

这是更安全的选择,它允许在出现任何错误/错误的情况下轻松回滚。

也可以在rollout restart请求时在部署中逐个重新启动 pod。

.spec.strategy.rollingUpdate.maxUnavailable应该设置为1这意味着在重新启动期间最多只有 1 个 pod 不可用 -参考最大不可用

Kubernetes 部署


推荐阅读