kubectl run使用overrides参数报Invalid JSON Patch错误如何解决?
问题原因
- 直接报错原因:执行命令中
--overrides=参数后多了一个多余空格,Shell会将该参数拆分为两个独立部分,--overrides被赋值为空字符串,后续的$(cat pod.json)输出内容被识别为未知位置参数,导致kubectl解析JSON Patch失败。 - 潜在冲突问题:命令行参数与pod.json配置存在多处冲突,修复空格问题后会触发新的报错:
- 命令指定Pod名称为
tmp-pod,JSON中指定名称为test - 命令指定命名空间为
my-scripts,JSON中指定命名空间为my-ns - 命令指定镜像为
placeholder,JSON中指定镜像为myimage
- 命令指定Pod名称为
修复方案
- 先修正命令中的空格问题,将
--overrides=后的空格删除,保证JSON内容被正确识别为--overrides的参数值 - 统一配置来源,二选一即可:
- 方案A:完全使用pod.json的配置,删除命令中重复定义的冗余参数,修复后命令如下:
kubectl run -i --rm --restart=Never --overrides="$(cat pod.json)" - 方案B:保留命令行中的Pod名称、命名空间、镜像配置,删除pod.json中
metadata.name、metadata.namespace字段,以及spec.containers[0].image字段,避免配置冲突。
- 方案A:完全使用pod.json的配置,删除命令中重复定义的冗余参数,修复后命令如下:
内容的提问来源于stack exchange,提问作者user1591156
相关产品推荐
相关产品推荐

