【问题标题】:Does "kubectl rollout restart deploy" cause downtime?“kubectl rollout restart deploy”会导致停机吗?
【发布时间】: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),它按预期工作并且不会导致停机,但我需要将它应用到所有命名空间(没有指定部署),这就是我不确定的情况。

【问题讨论】:

    标签: kubernetes kubectl rollout


    【解决方案1】:

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

    重启命令如下:

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

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

    【讨论】:

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

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

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

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

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

    【讨论】:

    • 感谢您的额外解释,它对我帮助很大。在这种情况下,我的部署策略是“滚动部署”,所以它会按我的预期工作,但是感谢您的解释,我可以小心使用“重新创建”策略
    猜你喜欢
    • 2021-10-28
    • 2023-01-25
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多