kubectl patch 用于对资源对象进行部分更新,允许直接修改资源的特定字段,而不需要重新提交完整的 YAML 或 JSON 文件,适合在需要快速更新资源配置时使用,一起来看看如何使用吧!
目录
1、kubectl patch 命令使用场景
-
更新单个或多个字段:当只需改变某个特定的字段而不想影响其他配置时
-
简化资源更新:避免编辑整个 YAML 配置文件,从而减少出错的机会
-
自动化和脚本:在 CI/CD 流程中,快速地应用小的变更而无需干预
2、kubectl patch 命令的基本用法
kubectl patch <资源类型> <资源名称> -p '{"spec": {"字段": "值"}}'
-
<资源类型>:例如
pod
、deployment
、service
等 -
<资源名称>:目标资源的名称<>
-
-p
:指定要更新的 JSON 或 YAML 片段
3、使用 kubectl patch 命令
# 查看帮助命令
kubectl patch --help
# 更新 deployment -> mydeployment 的副本数
kubectl patch deployment mydeployment -p '{"spec": {"replicas": 5}}'
# 为 pod -> mypod 添加标签
kubectl patch pod mypod -p '{"metadata": {"labels": {"name": "mypod"}}}'
# 修改 service -> myservice 的端口
kubectl patch service myservice -p '{"spec": {"ports": [{"port": 8080}]}}'
# 为节点 node1 添加污点
kubectl patch node node1 -p '{"spec": {"taints": [{"key": "gpu", "value": "true", "effect": "NoSchedule"}]}}'
# 修改 deployment -> mydeployment 的第一个容器镜像
# --type='json':指定补丁的类型,上方使用 JSON Patch 格式
# path:指向需要修改的路径,通过 / 分隔
# value:用于替换指定路径上的当前值
kubectl patch deployment mydeployment --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "nginx:1.19"}]'