kubectl patch
copy from:使用 kubectl patch 更新 API 对象
1、使用策略性合并补丁更新一个 Deployment
通过补丁,您可以避免定义整个对象,只需要定义您希望更改的部分。
通过策略性合并补丁,您只需要定义新增的元素就可以更新一个列表。
列表中已有的元素仍然保留,新增的元素和已有的元素会被合并。上述例子
中,最终结果的 containers 列表中既有原先的 nginx 容器,也有新增的 redis 容器。
第一步: 创建一个deployment
# cat deployment-patch-demo.yaml
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: patch-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: patch-demo-ctr
image: nginx
tolerations:
- effect: NoSchedule
key: dedicated
value: test-team
$ kubectl create -f ./deployment-patch-demo.yaml
第二步: patch 更新 api 对象
# cat patch-file.yaml
spec:
template:
spec:
containers:
- name: patch-demo-ctr-2
image: redis
$ kubectl patch deployment patch-demo --patch "$(cat patch-file.yaml)"
第三步: 查看更新结果
kubectl get deployment patch-demo --output yaml
# deployment中的POD中会有两个容器
2、使用一个 JSON 合并补丁更新一个 Deployment
第一步: 创建一个deployment (同上)
第二步: patch 更新api对象
cat patch-file-2.yaml
spec:
template:
spec:
containers:
- name: patch-demo-ctr-3
image: gcr.io/google-samples/node-hello:1.0
$ kubectl patch deployment patch-demo --type merge --patch "$(cat patch-file-2.yaml)"
第三步: 查看更新结果
kubectl get deployment patch-demo --output yaml
# deployment中的POD中只有一个容器,原容器被替换
3、其他
# 等价命令
kubectl patch deployment patch-demo --patch "$(cat patch-file.yaml)"
kubectl patch deployment patch-demo --patch $'spec:\n template:\n spec:\n containers:\n - name: patch-demo-ctr-2\n image: redis'
kubectl patch deployment patch-demo --patch "$(cat patch-file.json)"
kubectl patch deployment patch-demo --patch '{"spec": {"template": {"spec": {"containers": [{"name": "patch-demo-ctr-2","image": "redis"}]}}}}'
作者:驴得水。 只做精品
分类:
k8s&docker
标签:
k8s&docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库