使用kubectl create configmap --from-file参数时内容格式不一致问题
kubectl创建ConfigMap时内容格式不一致的原因
该现象是kubectl依赖的Go语言YAML序列化库的自动标量格式选择逻辑导致的,序列化时会根据文件内容的特征自动选择最合适的输出格式,两种格式的触发条件如下:
触发
|-块标量格式的条件
当文件内容同时满足以下所有要求时,会自动输出为块标量格式:- 内容包含至少一个换行符
- 所有行的行尾没有多余的空白字符(空格、制表符)
- 内容不存在需要特殊转义的不可见控制字符或不规范Unicode字符
|-标识的含义为:保留块内的换行符,同时删除内容末尾的最后一个换行符
触发转义字符串格式的条件
当文件内容满足以下任意一个要求时,会被序列化为带\n转义的单行字符串格式:- 文件末尾没有追加换行符,这是很多单内容小文件常见的情况,部分编辑器默认不会给只有一行的文件自动补末尾换行
- 内容存在行尾空白字符
- 内容包含需要转义的特殊控制字符
你可以执行cat -A ./conf-files/conf2.js查看conf2.js的不可见字符,即可定位具体触发转义的原因,修正对应问题后重新执行命令,所有配置文件的内容都会统一为块标量格式。
内容的提问来源于stack exchange,提问作者eitann
相关产品推荐
相关产品推荐

