Kubernetes - 部署无效。无效值

时间:2017-10-17 18:24:41

标签: kubernetes

我正在尝试更新部署中的某些值。

# kubectl get deploy activemq-deployment -o yaml

spec:
.
.
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
.
.

我正在尝试动态更新maxUnavailablemaxSurge的值。我正在使用的命令是:

# kubectl patch  deploy activemq-deployment -p '{"spec":{"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":"2","maxSurge":"5"}}}}'

但是这个命令会产生错误:

The Deployment "activemq-deployment" is invalid: 
* spec.strategy.rollingUpdate.maxUnavailable: Invalid value: "1": must match the regex [0-9]+% (e.g. '1%' or '93%')
* spec.strategy.rollingUpdate.maxSurge: Invalid value: "5": must match the regex [0-9]+% (e.g. '1%' or '93%')

看起来它只期待我的完美。如果我这样做,

# kubectl patch  deploy activemq-deployment -p '{"spec":{"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":"100%","maxSurge":"100%"}}}}'
"activemq-deployment" patched

如您所见,这是成功的。但是当我创建部署文件时,我使用的是整数而不是百分比。知道为什么patch命令不允许我发布整数值吗?

2 个答案:

答案 0 :(得分:0)

我打赌$ 1是因为API看到你为这些值提供了字符串,并且期望它是一个百分比(因为在yaml中,如果你说maxSurge: 5将会是一个整数,但maxSurge: 5%将是一个字符串)

将命令更新为

kubectl patch deploy activemq-deployment -p '{
  "spec": {
    "strategy": {
      "type": "RollingUpdate",
      "rollingUpdate": {
        "maxUnavailable": 2,
        "maxSurge": 5
      }
    }
  }
}'

我怀疑它会做你想做的事情

答案 1 :(得分:0)

为了你

# kubectl patch  deploy activemq-deployment -p '{"spec":{"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":"2","maxSurge":"5"}}}}'

删除“2”和“5”周围的引号,否则它们将被解释为字符串……如果将它们保留为 2 和 5 数字,则该命令将起作用,即

# kubectl patch  deploy activemq-deployment -p '{"spec":{"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable": 2,"maxSurge": 5}}}}'