Bootstrap

【k8s】-configmap格式错乱问题

问题

发现configmap资源在查看(-o yaml)或者修改(edit)时,存在格式错乱问题。以Prometheus配置文件为例,通过kubectl create cm Prometheus创建cm,如下:

img

原因

可能是由于配置文件(如nginx.conf)文件自身存在制表符TAB或者尾随空格,Kubernetes ConfigMap在load过程中发现文件中包含tab缩进,直接转化为\n\t。
我们需要在创建cm前先把配置文件格式化

# 使用以下方法删除尾随空格
sed -i -E 's/[[:space:]]+$//g' file.txt
# 使用空格替换制表符
sed -i 's/\t/    /g' file.txt

查看源文件

kubectl -n monitoring get cm test -ojson | jq '.data."prometheus.yml"' -r

image.png

重新生成cm

  1. 格式化配置文件后重新create configmap;(原配置文件能找到)
  2. jq ‘xxx’ -r获取当前配置文件后重新create configmap;(当前cm里面直接拿)
;