现象
当使用本地文件 –from-file=xxx 创建 kubernetes(简称 K8S,下同)configmap 时,应用程序能正确读取 configmap,但使用 get 或 edit 命令,显示为乱码(ASCII),也无法正常修改配置。
创建命令参考:
kubectl create configmap --from-file=login.yaml login-cm # 返回值一切正常
读取命令参考:
kubectl get configmap login-cm -o yaml
返回结果如下:
可以看到 login.yaml: 后面的内容为乱码。
解决方案
问题是因为上述 yaml 文件的格式是带 BOM 的 UTF-8,Linux 无法准确识别这种文件,所以无法正常显示。但我的应用程序是用 Go 实现的,能正确读取。
一般情况下去掉开头的 BOM 就能解决问题,