configMap的使用
2019-12-10 本文已影响0人
理想枫林晚
1、创建配置源文件
vi my.cnf
[mysqld]
user=mysql
port=3307
2、创建Pod容器文件
vi test-mysql-config.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-configmap
spec:
containers:
- name: test-configmap-volume
image: busybox
args:
- sleep
- "86400"
volumeMounts:
- name: mysqlcfmap
mountPath: "/mysqlcfmap"
readOnly: true
volumes:
- name: mysqlcfmap
configMap:
name: mysqlcfmap
3、创建configMap
kubectl create configmap mysqlcfmap --from-file=./my.cnf
4、查看configMap信息
kubectl get configmaps mysqlcfmap -o yaml
5、创建Pod
kubectl create -f test-mysql-config.yaml
6、进入Pod查看
kubectl exec -it test-configmap sh
cat mysqlcfmap/my.cnf
成功!!
configMap案例
1 从普通文件创建
kubectl create configmap mysql-cnf --from-file=my-cnf=./my.cnf
2 从 yaml 文件创建
# ./kustomization.yaml
configMapGenerator:
- name: mysql-cnf
files:
- my-cnf=./my.cnf
kubectl apply -f ./kustomization.yaml
Pod使用
1、更新
更新 Etcd 中配置数据
apiVersion: v1
kind: Pod
metadata:
name: test-configmap
spec:
containers:
- name: test-configmap-volume
image: busybox
args:
- sleep
- "86400"
volumeMounts:
- name: mysqlcfmap
mountPath: "/etc/config" # 挂载到容器中目录,这个目录会自动创建
volumes:
- name: mysqlcfmap
configMap:
name: mycnf # 创建 configmap 对象的名称
items:
- key: my-cnf # 创建 configmap 对象时指定的 key
path: my.cnf # 容器 a 目录中的文件名
# /etc/config/my.cnf # 软链接
2、不更新
apiVersion: v1
kind: Pod
metadata:
name: test-configmap
spec:
containers:
- name: test-configmap-volume
image: busybox
args:
- sleep
- "86400"
volumeMounts:
- name: mysqlcfmap
mountPath: "/etc/my.cnf" # 挂载到容器中目录,这个目录会自动创建
subPath: my.cnf
volumes:
- name: mysqlcfmap
configMap:
name: mycnf # 创建 configmap 对象的名称
items:
- key: my-cnf # 创建 configmap 对象时指定的 key
path: my.cnf # 容器 a 目录中的文件名
使用key,path的方式可以动态更新数据
注意: 使用subPath的方式,无法实现动态更新
根据场景合理使用