一.Configmap作用
实验环境:清除之前的ns pod svc networkpolicy......
kubectl delete -f networkpolicy.yaml
kubectl delete svc myapp-v1
kubectl delete svc myapp-v2
kubectl delete deployments.apps myapp-deployment myapp-deployment-v2
kubectl delete pod demo --forcekubectl delete ns test --force
卷 | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/storage/volumes/
二. 四种创建方式 ![](https://i-blog.csdnimg.cn/blog_migrate/0057d27f8b1d1ca6d38e8fee5e3f551a.png)
字面值创建
通过输入命令方式创建
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2![]()
通过文件创建
kubectl create configmap my-config-2 --from-file=/etc/resolv.conf
通过目录创建
kubectl create configmap my-config-3 --from-file=test
通过yeml文件创建
apiVersion: v1
kind: ConfigMap
metadata:
name: cm1-config
data:
db_host: "bjzx" #内容自定义只要是键值对
db_port: "fhzw"
三. configmap配置管理
通过环境变量方式传递给pod
编辑配置文件 vim pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: pod1
image: busybox
command: ["/bin/sh", "-c", "env"]
env:
- name: key1
valueFrom: #从哪映射的值
configMapKeyRef: #从cnm这里
name: cm1-config
key: db_host #取得值赋予给key1
- name: key2
valueFrom:
configMapKeyRef:
name: cm1-config
key: db_port
restartPolicy: Never
使用configmap设置命令行参数
apiVersion: v1
kind: Pod
metadata:
name: pod3
spec:
containers:
- name: pod3
image: busybox
command: ["/bin/sh", "-c", "echo $(db_host) $(db_port)"]
envFrom:
- configMapRef:
name: cm1-config
restartPolicy: Never
通过数据卷使用configmap (使用最多的)
apiVersion: v1
kind: Pod
metadata:
name: pod4
spec:
containers:
- name: pod4
image: busybox
command: ["/bin/sh", "-c", "cat /config/db_host"]
volumeMounts: #挂载卷
- name: config-volume #定义挂载名字
mountPath: /config #挂载点
volumes: #映射的什么存储类型
- name: config-volume
configMap: #这里映射的configmap
name: cm1-config #名字
restartPolicy: Never
四. configmap热更新
1. 创建配置文件 vim nginx.conf
2. 创建cnm
kubectl create configmap nginxconf --from-file=nginx.conf
3. 创建Deloyment控制器
4. 编辑cm,修改端口 kubectl edit cm nginxconf
5.修改cm后,过上几秒配置信息会同步到容器,但是容器内运行的服务并不会加载生效,需要手动刷新,这里直接删除pod自动重建刷新