我正在尝试更新部署中的某些值。
# 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
如您所见,这是成功的。但是当我创建部署文件时,我使用的是整数而不是百分比。知道为什么patch命令不允许我发布整数值吗?
答案 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}}}}'