所属技术领域:
Pod
|名词定义|
主要管理容器运行所需的配置文件,环境变量,命令行参数等可变配置。用于解耦容器镜像和可变配置,从而保障工作负载(Pod)的可移植性。
|技术特点|
ConfigMaps的创建
创建命令:kubectl create configmap NAME
其中DATA:
-指定文件或目录
-指定键值对
指定文件:kubectl create configmap kube-flannel-cfg --from-file=configure-pod-container/configmap/cni-conf.json -n kube-sytem
指定键值对:kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
ConfigMaps的使用
ConfigMaps主要被Pod使用,一般用于挂载Pod用的配置文件,环境变量,命令行参数等。
ConfigMaps的使用注意点
1.ConfigMap文件大小限制:1MB
2.Pod只能引用相同Namespace中的ConfigMap
3.Pod引用的ConfigMap不存在时,Pod无法创建成功。即Pod创建前需要先创建好ConfigMap。
4.使用envFrom从ConfigMap来配置环境变量时是,如果ConfigMap中的某些key被认为无效(比如key名称中带有数字),该环境变量将不会注入容器,但是Pod可以正常创建。
5.只有通过k8s api创建的pod才能使用ConfigMap,其他方式创建的pod(如manifest创建的static pod)不能使用ConfigMap。
在Pod中使用ConfigMap
在Pod cm-test-pod 的定义中,将ConfigMap cm-appvars 中的内容以环境变量(APPLOGLEVEL和APPDATADIR)设置为容器内部的环境变量,容器的启动命令将显示这两个环境变量的值("env | grep APP"):
使用kubectl create -f命令创建该Pod,由于是测试Pod,所以该Pod在执行完启动命令后将会退出,并且不会被系统自动重启(restartPolicy: Never):
kubectl create -f cm-test-pod.yaml
使用kubectl get pods --show-all 查看已经停止的Pod
查看该Pod的日志,可以看到启动命令“env | grep APP”的执行结果如下:
$ kubectl logs cm-test-pod
APPDATADIR=/var/data
APPLOGLEVEL=info
从Kubernetes v1.6开始,引入了一个新的字段 envFrom ,实现在Pod环境内将ConfigMap(也可用于Secret资源对象)中所定义的key=value自动生成为环境变量:。
在 Pod 命令里使用 ConfigMap 定义的环境变量
我们可以利用$(VAR_NAME)这个 Kubernetes 替换变量,在 Pod 的配置文件的 command 段使用 ConfigMap 定义的环境变量。
通过volumeMount使用ConfigMap
当您使用 --from-file 创建 ConfigMap 时,文件名将作为键名保存在 ConfigMap 的 data 段,文件的内容变成键值。
使用ConfigMap的限制条件
使用ConfigMap的限制条件如下:
ConfigMap必须在Pod之前创建(除非您把 ConfigMap 标志成”optional”)。如果您引用了一个不存在的 ConfigMap,那这个Pod是无法启动的。就像引用了不存在的 Key 会导致 Pod 无法启动一样。
ConfigMap受Namespace限制,只有处于相同的Namespace中的Pod可以引用它;
ConfigMap中的配额管理还未能实现;
kubelet只值支持可以被API Server管理的Pod使用ConfigMap。kubelet在当前Node上通过 --manifest-url或 --config 自动创建的静态Pod将无法引用ConfigMap;
在Pod对ConfigMap进行挂载(volumeMount)操作时是,容器内部只能挂载为目录,无法挂载为文件。
在挂载到容器内部后,目录中将包含ConfigMap定义的每个item,如果该目录下原来理还有其他文件,则容器内的该目录会被挂载的ConfigMap覆盖。
|资料来源|
技术特点:
https://mp.weixin.qq.com/s?src=11×tamp=1580801348&ver=2137&signature=HKFTl*LaaCIIICFtRbSHyCYN6DnTy44PQbm3VJYhtvoDjlts6KtpCLmZCRVMFbHitpVElFNi0dXsD1DEgpr3V6yULBXtd0XhVkO67SG8xE-fJGdyf-iwv4NSaL8FMayl&new=1