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"}]}}}}'
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值