K8s的patch命令随记:修订间差异

来自三线的随记
(创建页面,内容为“初接触k8s patch感觉是用起来较为繁琐的一个命令,遂开启本文随记一下一些常见用途 === Prerequisite Notes - 前提说明 === kubectl p…”)
 
无编辑摘要
第1行: 第1行:
__TOC__
初接触k8s patch感觉是用起来较为繁琐的一个命令,遂开启本文随记一下一些常见用途
初接触k8s patch感觉是用起来较为繁琐的一个命令,遂开启本文随记一下一些常见用途




=== Prerequisite Notes - 前提说明 ===
===Prerequisite Notes - 前提说明===
kubectl patch 其实是有三种行为表现的,分别是  [json merge strategic]
kubectl patch 其实是有三种行为表现的,分别是  [json merge strategic]


第16行: 第19行:
<br />
<br />


=== 记录 ===
===记录===
<br />


==== 利用 kubectl patch 修改 service labels ====
====利用 kubectl patch 修改 service labels====
  <nowiki>kubectl patch -n demo svc demo-svc --patch '{"metadata": {"labels":{"app": "demo-app"}}}'</nowiki>
  <nowiki>kubectl patch -n demo svc demo-svc --patch '{"metadata": {"labels":{"app": "demo-app"}}}'</nowiki>


* 表现行为为: append
*表现行为为: append


<br />
<br />


==== 利用 kubectl patch 和 cat 修改 deployment labels ====
====利用 kubectl patch 和 cat 修改 deployment labels====


* 表现行为为: append
*表现行为为: append


  [root@master44 yamls]# cat patch-labels.yaml
  [root@master44 yamls]# cat patch-labels.yaml
第36行: 第38行:


  [root@master44 yamls]# kubectl patch -n demo deployments.apps demo-app --patch "$(cat patch-labels.yaml)"
  [root@master44 yamls]# kubectl patch -n demo deployments.apps demo-app --patch "$(cat patch-labels.yaml)"
 
 
[[分类:K8s]]
[[分类:K8s]]
[[分类:Todo]]
[[分类:Todo]]

2021年1月7日 (四) 18:30的版本


初接触k8s patch感觉是用起来较为繁琐的一个命令,遂开启本文随记一下一些常见用途


Prerequisite Notes - 前提说明

kubectl patch 其实是有三种行为表现的,分别是 [json merge strategic]

官方指引文档中有引用一篇文章描述 json patch 和 json merge的区别,虽然看得很让我迷惑

For a comparison of JSON patch and JSON merge patch, see [rfc:7386 JSON Patch and JSON Merge Patch.]


另外一种叫做「策略性合并patch」的行为表现是由kubernetes 定义的,由 patchStrategy 字段决定(在api文档可以找到此字段) 例如 https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#podspec-v1-core


而利用 json patch 可以实现更为强大的增加/修改/删除行为

记录

利用 kubectl patch 修改 service labels

kubectl patch -n demo svc demo-svc --patch '{"metadata": {"labels":{"app": "demo-app"}}}'
  • 表现行为为: append


利用 kubectl patch 和 cat 修改 deployment labels

  • 表现行为为: append
[root@master44 yamls]# cat patch-labels.yaml
metadata:
 labels:
   app: demo-app
[root@master44 yamls]# kubectl patch -n demo deployments.apps demo-app --patch "$(cat patch-labels.yaml)"