【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 ,将不会重新拉取镜像。

广告
将在 10 秒后关闭
bannerAds