首页/云/Kubernetes 速查/kubectl kustomize 与 -k 使用
kubectl 基础56 条

kubectl kustomize 与 -k 使用

Kustomize 内置在 kubectl:用 base + overlay 结构复用清单,通过 patch 与 namePrefix 等生成器管理多环境差异,无需模板语法。

Kubernetes 速查云更新于 2026-10-13

Kustomize 与 -k 参数

Kustomize 用目录结构和补丁描述多环境差异,不需要模板语法,也不需要在清单里写变量占位符。kubectl 已经内置它:apply、diff、delete 都支持 -k 直接指向某个 overlay 目录。base 存放公共清单,overlay 只写差异,公共部分改一次就能同步到所有环境。

基本信息

适用平台kubectl 1.21+,内置版本随 kubectl 发布
入口文件每个目录一个 kustomization.yaml
常用字段resources、patches、namePrefix、images、commonLabels
调用方式kubectl apply -k <目录>
仅渲染kubectl kustomize <目录>

典型使用场景

  • 同一套清单用于测试与生产,只有副本数、镜像标签与资源上限不同
  • 给全部资源统一加名称前缀或公共标签,避免与其他团队的对象重名
  • 流水线只替换镜像标签:改 images 字段即可,业务清单保持不动
  • 发布前先渲染成完整 YAML 做评审并归档,留下可追溯的变更记录
  • 把上游开源组件的清单当 base,本地只覆盖必要字段

目录结构

目录结构
k8s/
  base/
    kustomization.yaml
    deployment.yaml
    service.yaml
  overlays/
    prod/
      kustomization.yaml
      replicas-patch.yaml

kustomization 与命令

kustomization 与命令
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../base          # 引用公共清单
patches:
  - path: replicas-patch.yaml   # 只覆盖差异字段
namePrefix: prod-             # 统一加前缀避免重名
images:
  - name: app
    newTag: "1.26.0"

渲染与发布

渲染与发布
kubectl kustomize ./k8s/overlays/prod > rendered.yaml   # 先渲染审查
kubectl diff -k ./k8s/overlays/prod                     # 对比集群现状
kubectl apply -k ./k8s/overlays/prod                    # 确认后再提交

常用字段读法

字段作用使用提示
resources引用基础清单或目录overlay 里通常指向 ../base
patches对目标对象做局部修改路径写错可能静默不生效,渲染后要核对
namePrefix给所有资源名加前缀先确认名称长度不超过限制
images批量替换镜像与标签流水线最常用的注入点
commonLabels给全部资源加统一标签注意不要与选择器冲突
内置的 Kustomize 版本跟随 kubectl 发布,不同开发机可能渲染出细微差异。CI 中固定 kubectl 版本可以避免本地渲染正常、流水线报错的尴尬。
补丁的字段路径或目标选择器写错时,渲染结果往往只是没改到字段而不报错。渲染后要用文本检索确认目标字段确实变化,再执行发布。

易错点

  • 补丁路径写错却不报错:以为改动已生效,实际发布的是旧配置
  • 开发机与流水线 kubectl 版本不一致:内置渲染器版本随之不同,出现本地能渲染、流水线失败
  • 把密钥明文写入 base:base 会被多处复用,密钥进入版本库后很难彻底清理
  • overlay 里重复定义同一资源:渲染出两份同名对象,提交时冲突或互相覆盖

数据来源与参考

  • Kubernetes 官方文档 · Kustomize(Declarative Management)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌