kubectl kustomize edit报错需指定kustomization.yaml路径问题
问题复现信息
- 操作目录:存放overlay配置的
kustomization.yaml文件所在路径 - 异常表现:执行
kubectl kustomize edit set namespace test命令时,返回报错error: specify one path to kustomization.yaml - 对照结果:同目录下执行参数完全一致的独立命令
kustomize edit set namespace test可正常运行,故障仅在kubectl调用内置Kustomize时触发 - 版本信息:
- kubectl版本:v1.24.2
- kubectl内置Kustomize版本:v4.5.4
- 本地独立安装的Kustomize二进制版本:v4.5.5
故障根因
- kubectl对内置Kustomize做了一层命令封装,
kubectl kustomize下的edit子命令不会像独立Kustomize二进制一样,默认将当前工作目录作为kustomization.yaml的查找路径,必须显式传入目标路径参数才能正常识别配置文件。 - Kustomize v4.5.4版本本身存在edit子命令路径识别的逻辑缺陷,该问题在v4.5.5版本中已完成修复,这也是本地独立安装的v4.5.5版本二进制无需额外参数即可正常运行的核心原因。
解决方法
- 若需要使用kubectl内置Kustomize执行edit操作,在命令末尾显式传入当前目录标识
.即可,命令如下:kubectl kustomize edit set namespace test .
执行效果与独立Kustomize命令完全一致。 - 若不想调整命令参数,edit类操作直接使用本地安装的v4.5.5版本独立Kustomize二进制执行即可。
- 注意:同一套overlay配置的编辑、渲染操作请尽量固定使用同一个版本的Kustomize,避免小版本差异导致
kustomization.yaml格式不兼容、资源渲染结果不符合预期的问题。
内容的提问来源于stack exchange,提问作者saurabh_garg
相关产品推荐
相关产品推荐

