目录
使用(patch)补丁修改、更新资源的字段。
支持JSON和YAML格式。
kubectl命令操作
k8s版本1.13
替换:replace
kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'
新增:add
kubectl patch pod valid-pod --type='json' -p='[{"op": "add", "path": "/metadata/labels/MixedDeploy_Status", "value":"true"}]'
删除:remove
kubectl patch pod valid-pod --type='json' -p='[{"op": "remove", "path": "/metadata/labels/MixedDeploy_Status"}]'
多个资源内容的修改、删除、新增
参数:JSON数组
疑惑:
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'
在K8s版本为1.13上,使用这种方式修改更新资源,却提示unpatch
kubernetes-client/java操作Patch
CoreV1Api apiInstance = new CoreV1Api(); String name = "主机名称"; // String | name of the Node // 新增 V1Patch body = new V1Patch("[{\"op\": \"add\", \"path\": \"/metadata/labels/MixedDeploy_Status\", \"value\":\"true\"}]"); // 替换更新 V1Patch body = new V1Patch("[{\"op\": \"replace\", \"path\": \"/metadata/labels/MixedDeploy_Status\", \"value\":\"false\"}]"); String pretty = "true"; String dryRun = null; Boolean force = true; // Boolean | Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests. try { V1Node result = apiInstance.patchNode(name, body, pretty, dryRun, null, force); System.out.println(result); } catch (ApiException e) { System.err.println("Exception when calling CoreV1Api#patchNode"); e.printStackTrace(); }