使用注意
只有通过 Kubernetes API 创建的 Pod 才能使用 ConfigMap,其他方式创建的(比如静态 Pod)不能使用;ConfigMap 文件大小限制为 1MB(ETCD 的要求)
创建
基于文件或目录
kubectl create cm my-config —from-file=path/to/bar
kubectl create cm my-config —from-file=key1=/path/to/bar/file1.txt —from-file=key2=/path/to/bar/file2.txt
from-file 可以是单个文件,文件名为 key ,内容为 value
也可以是目录,表示在该目录下面的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容
cm/redis.conf
host=127.0.0.1
port=6379
cm/mysql.conf
host=127.0.0.1
port=3306
基于字面值
kubectl create cm my-config —from-literal=key1=config1 —from-literal=key2=config2
kubectl create cm redis-cm —from-literal=host=1.1.1.1 —from-literal=port=6379
基于 yml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-cm
data:
my.cnf: |
port=3306
datadir=/data/mysql/data
bin-log=bin
slow-log=slow
使用
pod env
apiVersion: v1kind: Podmetadata:name: pod-envspec:containers:- name: pod-env-bbimage: busyboxcommand: ["/bin/sh","-c","sleep 3600"]env:- name: mysql_infovalueFrom:configMapKeyRef:name: mysql-cmkey: my.cnf
pod 卷挂载
apiVersion: v1
kind: Pod
metadata:
name: pod-vol
spec:
volumes:
- name: mysql
configMap:
name: mysql-cm
containers:
- name: pod-vol-bb
image: busybox
command: ["/bin/sh","-c","sleep 3600"]
volumeMounts:
- name: mysql
mountPath: /mysql

