1. 问题
在编辑configmap的时候偶尔后遇到configmap里的内容变为一坨,出现一堆\n的情况,如下图:
2. 原因
这个问题是configmap里有一些制表符(Tab)而不是四个空格(K8S的yaml文件只允许有空格)导致的。
Tips:使用kubectl describe cm xxx -n xxx是可以让该cm正常显示的。
解决
3.1 先备份这个configmap
kubectl get cm xxx -n xxx -oyaml > bak.yaml
3.2 使用describe命令查看这个cm,将confimap里data的内容另存为一个文件,并且将文件名改为cm内原本的文件名
kubectl describe cm xxx -n xxx > application-prd.yml
3.3 将无用的信息删除,只保留文件的内容
3.4 将文件中的Tab改为四个空格
#将每行以一个或多个给常规空格结尾的替换为空
sed -i -E 's/[[:space:]]+$//g' application.yml
#将每个Tab制表符替换为四个空格
sed -i 's/\t/ /g' application.yml
3.5 删除原本的cm,使用这个文件重新创建cm
kubectl create cm xx --from-file=application.yml -n zeus