【问题标题】:kubectl rolling-update having a downtime of few secondskubectl rolling-update 有几秒钟的停机时间
【发布时间】:2015-10-10 03:26:24
【问题描述】:

我将 Google Container Engine 与使用 Kubernetes 0.20.2 的集群一起使用。

在这个集群中,我有 1 个复制控制器(2 个副本)1 个服务,其规范类型定义为 LoadBalancer (基本设置)。

这里一切正常; 然后我想使用 kubectl 命令滚动更新到不同的图像:

kubectl rolling-update my-rc \
  --image=gcr.io/project/gcloudId:my-image-updated \
  --update-period=0m

据我了解,运行此命令应该注意零停机时间。不幸的是,我一直在循环使用 curl 命令进行一些测试,但我仍然有几秒钟的停机时间。 任何想法为什么会发生这种情况?

【问题讨论】:

    标签: gcloud kubernetes google-kubernetes-engine


    【解决方案1】:

    --update-period 标志告诉 Kubernetes 在将更新滚动到的每个 pod 之间等待多长时间。将更新周期设置为 0 时,Kubernetes 将一次更新所有 Pod,导致新 Pod 启动时短暂不可用。您应该将 --update-period 设置为至少与您的每个 pod 初始化一样长。如果您不想考虑它,默认值(1 分钟)几乎适用于所有情况。

    【讨论】:

    • 感谢您的回复,必须定义更新周期很奇怪,因为如果您要从缓慢的私有 Docker 注册表下载一个巨大的图像,您必须猜测它需要多少时间下载它?还是只是初始化,Kubernetes 知道映像何时准备就绪并运行?另外,我还没有找到为 LoadBalancer 设置会话亲和性的方法,知道吗?
    • 重要的是容器启动后的初始化时间。
    • 服务规范中有一个sessionAffinity 字段,您可以在其中配置负载均衡器关联性。
    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多