kubectl 滚动更新有几秒钟的停机时间
kubectl rolling-update having a downtime of few seconds
我正在使用 Google 容器引擎和一个使用 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 命令进行一些测试,但仍然有几秒钟的停机时间。
知道为什么会这样吗?
--update-period
标志告诉 Kubernetes 在滚动更新的每个 pod 之间等待多长时间。将更新周期设置为 0 时,Kubernetes 将立即更新所有 pods,导致新的 pods 启动时出现短时间不可用。您应该将 --update-period
设置为至少与每个 pods 初始化所花费的时间一样长。如果您不想考虑的话,默认值(1 分钟)应该适用于几乎所有情况。
我正在使用 Google 容器引擎和一个使用 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 命令进行一些测试,但仍然有几秒钟的停机时间。 知道为什么会这样吗?
--update-period
标志告诉 Kubernetes 在滚动更新的每个 pod 之间等待多长时间。将更新周期设置为 0 时,Kubernetes 将立即更新所有 pods,导致新的 pods 启动时出现短时间不可用。您应该将 --update-period
设置为至少与每个 pods 初始化所花费的时间一样长。如果您不想考虑的话,默认值(1 分钟)应该适用于几乎所有情况。