Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 以下部署策略在kubernetes中意味着什么?_Deployment_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Deployment 以下部署策略在kubernetes中意味着什么?

Deployment 以下部署策略在kubernetes中意味着什么?,deployment,kubernetes,google-kubernetes-engine,Deployment,Kubernetes,Google Kubernetes Engine,我在kubernetes中为我的负载平衡器服务使用默认部署策略,当我描述我的部署时,策略如下所示: Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable StrategyType: RollingUpdate 最小就绪秒:0 滚动更新策略:1个最大不可用,1个最大喘振 因此,根据描述,不应该有任何停机时间。但是,服务中仍然存在停机时间。 如何确保零停机时间?

我在kubernetes中为我的负载平衡器服务使用默认部署策略,当我描述我的部署时,策略如下所示:

Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:           RollingUpdate
最小就绪秒:0 滚动更新策略:1个最大不可用,1个最大喘振

因此,根据描述,不应该有任何停机时间。但是,服务中仍然存在停机时间。
如何确保零停机时间?

从我所看到的情况来看,您正在尽可能快地使用
方法

虽然这是一种很好的方法,但最好使用
副本:3
,因为在更新过程中可能会有2个
pod

您应该实现如下所示的功能:

readinessProbe:  
  httpGet:  
     path: /  
     port: 8080  
     initialDelaySeconds: 5  
     periodSeconds: 5  
     successThreshold: 1
  • initialDelaySeconds
    :启动就绪探测之前容器启动后的秒数
  • periodSeconds
    :执行探测的频率。默认为10秒
  • successThreshold
    :探测器失败后被视为成功的最小连续成功次数。默认值为1

我还建议阅读,因为它们很好地解释了滚动更新的用法。

因为您有MinReadySeconds:0,在pod的新实例启动后,旧实例会立即被杀死。我建议将MinReadySeconds提高到合理的秒数(可能是30秒),并确保为pod配置了LivenessProbe。这可能会有帮助。那么,如果我将MinReadySeconds设置为30,那么建议的活跃度和准备度探测时间是多少?另外,您是否认为使max不可用于0将有助于确保零停机时间?我不知道是否有任何关于活动性探测间隔的建议。Max UNAVAILABE(最大不可用)0将有助于满足您的需求,仅当部署的副本数为1I时,我有2个副本,因此我想我暂时不接触maxunavailabe(最大不可用)字段。我已启用准备就绪和活动性这两个探测。我认为停机时间是随机的。几天前,就在我进行部署之后,我有10-12秒的时间无法访问服务端点。然而,当我今天测试同样的东西时,根本没有停机!我在deployment.yaml中没有做任何更改。这是可能的,您可以做的是检查您要连接到哪个
pod
。它是一个新的更新过的还是旧的删除过的。正如White11所指出的,要添加到这个答案中,使用MinReadySeconds从0更改为30将意味着下一个要更换的pod将等待30秒。理想情况下,MinReadySeconds应该等于或高于pod启动所需的时间