作用:
就是为了让镜像 和 配置文件解耦,以便实现镜像的可移植性和可复用性,因为一个configMap其实就是一系列配置信息的集合,将来可直接注入到Pod中的容器使用,而注入方式有两种
一种将configMap做为存储卷
一种是将configMap通过env中configMapKeyRef注入到容器中,configMap是KeyValve形式来保存数据的,如: name=zhangsan 或 nginx.conf=”http{server{…}}” 对于configMap的Value的长度是没有限制的,所以它可以是一整个配置文件的信息
实验步骤:
Step - 1:创建CM(配置资源共享存储中心)
先创建一个目录,用来专门存放有关configmap的配置
“mkdir /opt/kubernetes-ConfigMap”
首先我们要创建一个cm资源,然后声明式创建资源,并结合dashboard辅证,可以看到,configmap的配置信息,就是以key-vaule键值形式存在的
“vim configmap-cm.yaml”
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap
namespace: storage #指定名称空间
data:
info: | #未来会被共享的配置信息
username:admin
password:123456
“kubectl apply -f configmap-cm.yaml”
“kubectl describe cm configmap -n storage”
Step - 2:创建POD资源,并挂载指定CM
编辑configmap-pod资源,并与对应的cm对应起来,进行相互挂载
“vim configmap-pod.yaml”
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod
namespace: storage #名称空间别对应错了
spec:
containers:
- name: nginx
image: nginx:latest
volumeMounts: # 将configmap挂载到目录
- name: config
mountPath: /configmap/config
volumes: # 引用configmap
- name: config
configMap:
name: configmap
“kubectl apply -f configmap-pod.yaml”
然后我们通过dashboard进入busybox命令行,可以看到路径已经生成,并成功拉取了CM上的配置信息
Stsp - 3:效果验证
此时我们尝试去修改一下CM资源里的配置信息,重新声明式创建资源,看看pod中的配置信息是否实现了更新
更新成功,但经我试验实测,并不是立即生效的