“kubectl rollout restart deploy”会导致停机吗?

Posted

技术标签:

【中文标题】“kubectl rollout restart deploy”会导致停机吗?【英文标题】:Does "kubectl rollout restart deploy" cause downtime? 【发布时间】:2021-07-22 18:38:19 【问题描述】:

出于实施原因,我正在尝试重新启动命名空间的所有部署。

我正在使用“kubectl rollout -n restart deploy”,它运行良好,但我不确定该命令是否会导致停机,或者它是否作为“推出更新”工作,一一应用重启,保持我的服务起来了。

有人知道吗?

在文档中我只能找到这个:

Operation Syntax Description
rollout kubectl rollout SUBCOMMAND [options] Manage the rollout of a resource. Valid resource types include: deployments, daemonsets and statefulsets.

但我找不到有关特定“推出重启部署”的详细信息。

我需要确保它不会导致停机。现在很难说,因为重启过程很快。

更新:我知道对于一个特定的部署(kubectl rollout restart deployment/name),它按预期工作并且不会导致停机,但我需要将它应用到所有命名空间(没有指定部署),这就是我不确定的情况。

【问题讨论】:

【参考方案1】:

kubectl rollout restart deploy -n namespace1 将重新启动指定命名空间中的所有部署,停机时间为零。

重启命令如下:

    重新启动后,它将为每个部署创建新的 pod 一旦新的 pod 启动(运行并准备就绪),它就会终止旧的 pod

将readiness probes 添加到您的部署以配置初始延迟。

【讨论】:

非常感谢您的回答和有关准备探测的建议!我将使用此信息并检查@meaningqo 解释以尝试获得更准确的答案 我想这就是我需要的答案,因为out部署策略是默认的“滚动部署”,非常感谢!【参考方案2】:

@pcsutar 的回答几乎是正确的。 kubectl rollout restart $resourcetype $resourcename 根据其更新策略重新启动您的部署、守护程序集或有状态集。因此,如果将其设置为 rollingUpdate,它的行为将与上述答案完全相同:

    重新启动后,它将为每个部署创建新的 pod 一旦新的 pod 启动(运行并准备就绪),它就会终止旧的 pod

向您的部署添加就绪探测以配置初始延迟。

但是,例如,如果策略是 type: recreate,则属于部署的所有当前运行的 pod 都将在新的 pod 启动之前终止!

【讨论】:

感谢您的额外解释,它对我帮助很大。在这种情况下,我的部署策略是“滚动部署”,所以它会按我的预期工作,但是感谢您的解释,我可以小心使用“重新创建”策略

以上是关于“kubectl rollout restart deploy”会导致停机吗?的主要内容,如果未能解决你的问题,请参考以下文章

“kubectl rollout restart deploy”会导致停机吗?