zoukankan      html  css  js  c++  java
  • 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:
     template:
      spec:
       containers:
       - name: patch-demo-ctr-2
         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"}]}}}}'
     
  • 相关阅读:
    C++每次读取一行字符串输入(学习笔记) (转)
    Ubuntu使用Windows下的conio.h
    容斥原理、欧拉函数、phi
    UVa1635
    转:用STL中的vector动态开辟二维数组
    [转载]Vector用法(C++ Primer中文版)
    c++中vector的pair与make_pair的使用,双关键字排序
    uva12716 GCD XOR
    在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium
    Careercup
  • 原文地址:https://www.cnblogs.com/lizhaoxian/p/11544394.html
Copyright © 2011-2022 走看看