spec.template.spec.vulumes.configMap.defaultMode
和spec.template.spec.vulumes.configMap.items.mode
用在控制挂载进Pod的文件的权限 , ---
分别对应421(八进制)
apiVersion: apps/v1kind: Deploymentmetadata:labels:app: dp-test-cmname: dp-test-cmspec:replicas: 1selector:matchLabels:app: dp-test-cmtemplate:metadata:labels:app: dp-test-cmspec:volumes:- name: brm-configconfigMap:name: cm-from-fileitems:- key: redis.confpath: redis.conf.cusmode: 0111defaultMode: 0666containers:- image: nginxname: nginxvolumeMounts:- name: brm-configmountPath: "/etc/foo"
1.2.6、子目录-subPath关键字:subPath
subpath的作用是解决spec.template.spec.containers.volumeMounts.mountPath
的挂载覆盖问题
意思就是说 , 如果mountPath
指定的是一个目录 , 那么k8s会用我们期望挂载进该目录的文件覆盖掉该目录中已存在的文件 , 从而导致意外的结果 。
解决方式如下的subPath , 就是将cm 挂载成指定目录+指定文件 , 覆盖也是对指定目录中的指定文件进行覆盖 , 也就是下例中:将brm-config这个cm挂载进容器的/etc/foo/nginx.conf
文件(覆盖也不会影响其他文件) 。
【系统整理K8S的配置管理实战-建议收藏系列】apiVersion: apps/v1kind: Deploymentmetadata:labels:app: dp-test-cmname: dp-test-cmspec:replicas: 1selector:matchLabels:app: dp-test-cmtemplate:metadata:labels:app: dp-test-cmspec:volumes:- name: brm-configconfigMap:name: cm-from-fileitems:- key: redis.confpath: redis.conf.cusmode: 0111defaultMode: 0666containers:- image: nginxname: nginxvolumeMounts:- name: brm-configmountPath: "/etc/foo/nginx.conf"subPath: "nginx.conf"
这里可以做一个实验 , 比如在挂在之前先搞一个/etc/foo/1.txt , 然后分别用subpath和不用subpath两种方式做挂载 , 对比/etc/foo/1.txt的是否被覆盖的差异~1.2.7、热更新cm中的值被编辑修改后 , Pod中对应的挂载文件的值也会保持同步 。
特殊情况:
env-from
和value-from
这种以环境变量的形式挂载进pod的cm , 无法做到热更新subPath
也无法热更新1.2.8、不可变的cm与Kind同级 , 设置参数
immutable=true
即可1.3、限制条件
- cm收NameSpace限制 , 只有在同一个NameSpace中的Pod才能引用她
- cm必须先于使用它的pod前创建
- 只有被apiserver管理的Pod的才能使用cm , 静态pod无法使用cm
可以通过三种方式使用Secret
- 通过挂在方式挂在Secret到Pod中使用它
- 通过
# 创建文件[root@master01 echo -n 'admin' > ./username.txt[root@master01 echo -n 'qwerqwer123123' > ./password.txt# 查看帮助文档[root@master01 secret-file]# kubectl create secret --help# 基于file创建secret , 使用generic创建出的Secret类型为Opaque[root@master01 secret-file]# kubectl create secret generic db-user-info --from-file=./username.txt --from-file=./password.txtsecret/db-user-info created
查看[root@master01 secret-file]# kubectl get secrets db-user-info -oyamlapiVersion: v1data:password.txt: cXdlcnF3ZXIxMjMxMjM=username.txt: YWRtaW4=kind: Secretmetadata:creationTimestamp: "2022-04-05T23:08:11Z"name: db-user-infonamespace: defaultresourceVersion: "837054"uid: eabe607c-27fc-4611-92c6-fce4cc24f030type: Opaque
data中的数据经base64加密存储 , 可直接解密
经验总结扩展阅读
- 1分钟完成在线测试部署便捷收集班级同学文件的web管理系统
- 王者荣耀怎么取消健康系统?
- RHCE习题
- 红米note10怎么更新系统_系统更新教程
- 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]
- k8s 中的 ingress 使用细节
- oppo手机如何快速整理桌面 oppo怎样快速整理桌面
- 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]
- 消防报警器什么牌子好 十大消防报警系统品牌
- 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍