发现问题
编写text文件,用于创建要给nginx的configmap,如下:
[root@master redis]# vim txt
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: redis
data:
nginx.conf: |
#user nginx;
worker_processes 1;
#error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#
试运行,虽然能成功,但是发现数据都变成一行了,识别为字符串了,很乱,以后难以在线添加配置,难以维护:
[root@master redis]# kubectl create -f txt --dry-run=client -oyaml
apiVersion: v1
data:
nginx.conf: "#user nginx;\nworker_processes 1;\n\n#error_log /var/log/nginx/error.log
warn; \npid /var/run/nginx.pid;\n#\n"
kind: ConfigMap
metadata:
name: nginx-config
namespace: redis
问题排查
经过排查,发现是行尾多了空格导致的,我们可以这样查看:
[root@master redis]# cat -en txt
1 apiVersion: v1$
2 kind: ConfigMap$
3 metadata:$
4 name: nginx-config$
5 namespace: redis$
6 data:$
7 nginx.conf: |$
8 #user nginx;$
9 worker_processes 1;$
10 $
11 #error_log /var/log/nginx/error.log warn; $
12 pid /var/run/nginx.pid;$
13 #$
[root@master redis]# 第11行行尾居然有空格
删除空格
[root@master redis]# cat -nE txt #现在查看第11行已经没有空格了
1 apiVersion: v1$
2 kind: ConfigMap$
3 metadata:$
4 name: nginx-config$
5 namespace: redis$
6 data:$
7 nginx.conf: |$
8 #user nginx;$
9 worker_processes 1;$
10 $
11 #error_log /var/log/nginx/error.log warn;$
12 pid /var/run/nginx.pid;$
13 #$
[root@master redis]#
确认正常
现在试运行,格式终于正常了,这才是完美的格式,方便以后在线编辑配置文件:
[root@master redis-cluster-resoucr]# kubectl create -f txt --dry-run=client -oyaml
apiVersion: v1
data:
nginx.conf: |
#user nginx;
worker_processes 1;
#error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#
kind: ConfigMap
metadata:
name: nginx-config
namespace: redis
[root@master redis-cluster-resoucr]#
使用工具删除空格
经研究发现,redis官方的redis.config配置文件居然也是行末尾有空格,所以我们可以使用editplus这个工具来批量删除空格