【Kubernetes】开发过程中修改并应用已部署的清单文件的四种便捷方式 + 附加内容
我总结了使用Kubernetes进行开发和CI等应用中修改部分清单的四种方法。
用kubectl edit命令直接进行修改。
可以通过使用 “kubectl edit” 命令来打开编辑器并直接修改应用中的内容。
将名为nginx-deployment的deployment中的imagePullPolicy更改为Always。
kubectl edit deployments.apps nginx-deployment
因为打开了编辑器,所以将imagePullPolicy更改为Always并保存。
获取正在使用的清单文件,并在本地进行修改后再进行应用的方法。
使用”kubectl get ~~~ -o yaml”命令将正在应用的清单保存到本地并进行修改,然后再次应用该清单的方法。
将名为nginx-deployment的deployment中的imagePullPolicy更改为Always。
# 適用中のマニフェストを取得
kubectl get deployments.apps nginx-deployment -o yaml > nginx-deployment.yaml
# バックアップを作成
cp nginx-deployment.yaml nginx-deployment-backup.yaml
将nginx-deployment.yaml文件中的imagePullPolicy更改为imagePullPolicy: Always。
kubectl apply -f nginx-deployment.yaml
当需要恢复到原来的时候,重新应用备份即可。
kubectl apply -f nginx-deployment-backup.yaml
3. 使用kubectl patch
用 JSON 形式传递要覆盖重写的配置,并在一行中使用 `kubectl patch` 进行修改。
将deployment/nginx-deployment中的nginx映像更改为nginx:1.9.1。
kubectl patch deployment nginx-deployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.9.1"}]}}}}'
4. 使用kubectl set
使用kubectl set image命令,除了image外,还可以指定env、resources、selector、serviceaccount、subject。
例:将deployment/nginx-deployment的nginx镜像更改为nginx:1.9.1。
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
附加:添加适当的环境并强制重新创建
通过修改Pod的环境变量来强制重新创建的小技巧。
kubectl set env deployment/nginx-deployment RELOAD_DATE="$(date)"
请注意,如果不设置 imagePullPolicy: Always ,将不会重新拉取镜像。