>我正在尝试更新部署中的某些值。
# kubectl get deploy activemq-deployment -o yaml
spec:
.
.
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
.
.
我正在尝试即时更新maxUnavailable
和maxSurge
的值。我正在使用的命令是:
# 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}}}}'