Kubernetes 杂谈之 configmap \n的问题

本文详细探讨了KubernetesConfigMap中多行文本格式化的问题,包括解决YAML格式化丢失的方法,ResourceQuotas对ConfigMap的限制,以及如何正确创建和管理ConfigMap以避免格式混乱。还提到了处理尾随空格和特殊字符的技巧,以及推荐将文本格式化为yaml以保持可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一  configmap \n的问题

涉及的'知识点': configmap资源对象、yaml'|- |+ >'语法

目的: 彻底解决'YAML 多行文本'格式化'丢失'问题

①   ConfigMap 进阶

configmap 的data中的文件内容格式错乱

ConfigMap多行格式

场景:将业务部署到k8s时,'应用的配置文件'通常写在ConfigMap中,然后以文件的形式挂载到Pod中

kubectl create configmap -h

直接使用'字符串'进行创建,通过 --from-literal 参数传递配置信息,同样这个参数可以使用'多次'

Resource Quotas | Kubernetes   configmap个数限制案例

大部分Kubernetes版本'默认'开启了ResourceQuota

'低版本'在APIServer配置文件'--enable-admission-plugins'参数中添加ResourceQuota开启

个数和大小限制

ResourceQuotas 会限制'命名空间'中 configmap 的'数量'

思考: 但有没有这样的选项来限制'单个' configmap 的 'size'大小?

目的: 不希望某些用户开始将'大型文本文件'作为'配置'映射上传

ConfigMap 的大小'默认限制'为 '1MB'

解读: 

  1、实际ConfigMap 或 Secret 对象上都'没有'硬限制。

  2、然而'etcd'端有 '1MB' 的限制,这是 Kubernetes '存储其对象'的地方

 

1、主程序是'非pid=1'的常驻进程     --> 多个命令通过';'进行串连

2、'健康检查'常驻进程的'port端口'  --> '必须'

3、每'10s'检查'配置文件'的md5值,如果跟上次不一致就进行'reload|restart'

configmap的回车被转义成\n

②   yaml 特殊符号语法

在">"符号应用的'多行文本'值中,所有'换行符'都会被视为'空格'

> 右尖括号,用来表示'折叠换行',只有'空白行'才会被识别为'换行',原来的换行符都会被转换成'空格'

竖线符'|',这在 yaml 中表示保留换行,每行的'缩进和行尾空白'都会被'去掉',而额外的缩进会被保留

"|+": 保留'每行尾部的换行符\n'的同时,'保留'内容结尾处的换行符\n

"|-": 保留'每行尾部的换行符\n'的同时,'删除'内容结尾处的换行符\n

"|-":保留'行尾'换行符,但不保留'字符末尾'的换行符

">+":将行尾换行符'替换'成空格,保留'字符末尾'的换行符

">-":将行尾换行符替换成空格,'不保留'字符末尾的换行符

换行主要使用 | 和 > , '|'保留行尾'换行符', '>'将行尾换行符替换成'空格'

保留字符末尾的换行使用'+',删除字符末尾的换行使用'-',一般用于与'|'和'>'组合使用

K8S的yaml文件'只允许'有'空格'

jq杂谈

yaml 官方多行文本格式

说明: 补充一些'知识点'与本文关系不大

③  \n 问题引入

通过一个'对比实验'说明如何彻底'解决 YAML 多行文本格式化丢失'问题

备注: 不小心在'字符结尾换行前'多打了个'空格'

 

vimdiff ceshi{,1}.yml   '对比二者的差异性'

++++++++++++++++  "问题思考"  ++++++++++++++++

现象: configmap 的data中的文件内容'格式'错乱,可读性不强,不便于'edit'在线编辑

"推荐": 

  kubectl create configmap my-config --from-file=path/to/file

细节: 通过'file'文件的形式创建'cm',会产生'|'形式

备注: cm中推荐'配置文件'的形式引入,而不是直接将'相关配置数据'写入cm资源对象中,便于管理更新

进阶:  推荐'配置文件'也纳入'git'等版本控制中,跟'代码'放在一起一块管理

++++++++++++++++  "file中应该怎么操作"  ++++++++++++++++

# 使用以下方法删除'尾随'空格
sed -i -E 's/[[:space:]]+$//g' file

# 使用空格'替换'制表符
sed -i 's/\t/    /g' file

思考: nginx的配置文件'nginx.conf'

解决策略

④  结论

+++++++++ "主要是data中" +++++++++

1、文本'每行'不要以'空格'结尾

2、不要'换行'前再'带个空格'

3、不要在文本中添加'不可见'特殊字符

推荐: 将文本拷贝并'格式化yaml文本',可使用在线格式化工具

YAML在线格式化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值