“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”会导致停机吗?的主要内容,如果未能解决你的问题,请参考以下文章