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

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

我敢打赌 1 美元,这是因为 API 看到您为值提供了字符串,并期望它是一个百分比(因为在 yaml 中,如果您说maxSurge: 5那将是一个整数,但maxSurge: 5%将是一个字符串

将命令更新为

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

我怀疑它会按照你的意图去做

为你

# 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}}}}'

相关内容

最新更新