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
Kubernetes 如何在CrashLoopBackOff时自动停止滚动更新?_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Kubernetes 如何在CrashLoopBackOff时自动停止滚动更新?

Kubernetes 如何在CrashLoopBackOff时自动停止滚动更新?,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我使用GoogleKubernetes引擎,我故意在代码中输入一个错误。我希望滚动更新在发现状态为“CrashLoopBackOff”时停止,但事实并非如此 在这方面,他们说 部署控制器将自动停止坏卷展栏,并且 将停止扩展新的复制集。这取决于 rollingUpdate您拥有的参数(maxUnavailable) 指定的 但是它没有发生,是不是只有状态ImagePullBackOff 下面是我的配置 apiVersion: extensions/v1beta1 kind: Deployment

我使用GoogleKubernetes引擎,我故意在代码中输入一个错误。我希望滚动更新在发现状态为“CrashLoopBackOff”时停止,但事实并非如此

在这方面,他们说

部署控制器将自动停止坏卷展栏,并且 将停止扩展新的复制集。这取决于 rollingUpdate您拥有的参数(maxUnavailable) 指定的

但是它没有发生,是不是只有状态
ImagePullBackOff

下面是我的配置

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: volume-service
  labels:
    group: volume
    tier: service
spec:
  replicas: 4
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 2
      maxSurge: 2
  template:
    metadata:
      labels:
        group: volume
        tier: service
    spec:
      containers:
      - name: volume-service
        image: gcr.io/example/volume-service:latest

另外,我已经阅读了liveness/readiness Probe,但我认为它不能阻止滚动更新?或者是吗?

您引用的解释是正确的,这意味着新的复制集(出现错误的复制集)将不会继续完成,但它将在进入
maxsupge
+
maxUnavailable
计数时停止。旧的复制集也会出现

下面是我尝试的示例:

spec:
  replicas: 4
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
结果如下:

NAME                                  READY     STATUS             RESTARTS   AGE
pod/volume-service-6bb8dd677f-2xpwn   0/1       ImagePullBackOff   0          42s
pod/volume-service-6bb8dd677f-gcwj6   0/1       ImagePullBackOff   0          42s
pod/volume-service-c98fd8d-kfff2      1/1       Running            0          59s
pod/volume-service-c98fd8d-wcjkz      1/1       Running            0          28m
pod/volume-service-c98fd8d-xvhbm      1/1       Running            0          28m

NAME                                              DESIRED   CURRENT   READY     AGE
replicaset.extensions/volume-service-6bb8dd677f   2         2         0         26m
replicaset.extensions/volume-service-c98fd8d      3         3         3         28m
我的新replicaSet将只启动2个新POD(1个插槽来自
maxUnavailable
,1个插槽来自
maxSurge

旧的replicaSet将继续运行3个POD(4-1
不可用

您在
rollingUpdate
部分中设置的两个参数是关键点,但您也可以使用其他因素,如
readinessProbe
livenssprobe
minReadySeconds
progressDeadlineSeconds


对于他们来说,参考。

证明我只需要设置
minReadySeconds
,当新复制集的状态为
CrashLoopBackOff
或类似的
退出时,它会停止滚动更新,状态代码为1
。因此,现在旧的复制集仍然可用,并且没有更新

这是新的配置

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: volume-service
  labels:
    group: volume
    tier: service
spec:
  replicas: 4
  minReadySeconds: 60
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 2
      maxSurge: 2
  template:
    metadata:
      labels:
        group: volume
        tier: service
    spec:
      containers:
      - name: volume-service
        image: gcr.io/example/volume-service:latest
谢谢大家的帮助
spec:
  replicas: 4
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1 <----- I want at least (4)-[1] = 3 available pods.
      maxSurge: 1       <----- I want maximum  (4)+[1] = 5 total running pods.
spec:
副本:4份
战略:
类型:RollingUpdate
滚动更新:

maxUnavailable:1如果您使用的是liveness/readiness探测,那么也可以停止滚动更新。我建议您稍微使用一下这个功能,以了解maxSurge和maxUnavailable是如何工作的。谢谢您的回答!我已经明白了。但是当状态
CrashLoopBackOff
或类似的
退出时,我希望停止滚动更新,状态代码为1