3

我们有数百个部署,在配置中,我们将其中大多数的 imagePullPolicy 设置为“ifnotpresent”,而对于少数设置为“always”,现在我想将所有具有ifnotpresent的部署修改为always

我们怎样才能一下子做到这一点?

前任:

kubectl get deployment -n test -o json | jq ‘.spec.template.spec.contianer[0].imagePullPolicy=“ifnotpresent”| kubectl -n test replace -f - 

上面的命令有助于为一个特定的部署重置它。

4

1 回答 1

9

Kubernetes 本身并不提供大规模更新功能。为此,您必须使用其他 CLI 工具。话虽如此,对于修改现有资源,您也可以使用该kubectl patch功能。

下面的脚本并不漂亮,但会更新命名空间中的所有部署。

kubectl get deployments -o name | sed -e 's/.*\///g' | xargs -I {} kubectl patch deployment {} --type=json -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/imagePullPolicy", "value": "Always"}]'

注意:我曾经sed从名称中去除资源类型,因为 kubectl 无法识别对资源类型deployment.extensions(可能还有其他)执行的操作。

于 2018-08-29T15:41:32.093 回答