Pod必备知识: ConfigMaps

简介: 主要管理容器运行所需的配置文件,环境变量,命令行参数等可变配置。用于解耦容器镜像和可变配置,从而保障工作负载(Pod)的可移植性。

所属技术领域:

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”的执行结果如下:
kubectllogscmtestpodAPPDATADIR=/var/dataAPPLOGLEVEL=infoKubernetesv1.6envFromPodConfigMapSecretkey=valuePod使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&timestamp=1580801348&ver=2137&signature=HKFTl*LaaCIIICFtRbSHyCYN6DnTy44PQbm3VJYhtvoDjlts6KtpCLmZCRVMFbHitpVElFNi0dXsD1DEgpr3V6yULBXtd0XhVkO67SG8xE-fJGdyf-iwv4NSaL8FMayl&new=1

目录
打赏
0
0
0
0
17
分享
相关文章
【kubernetes】ConfigMap: 在 Pod 中挂载文件(非目录)
【kubernetes】ConfigMap: 在 Pod 中挂载文件(非目录)
781 4
k8s教程(pod篇)-容器获取pod信息(Downward API)
k8s教程(pod篇)-容器获取pod信息(Downward API)
1844 0
ReadWriteOnce、ReadOnlyMany、
ReadWriteOnce、ReadOnlyMany、ReadWriteMany和ReadWriteOncePod是Kubernetes中的卷(Volume)类型,用于在容器间共享数据。这些卷类型定义了如何访问存储卷,以及卷上的数据如何在容器间共享。下面是对这些卷类型的简要介绍:
2007 1
k8s学习-ConfigMap(创建、使用、更新、删除等)
k8s学习-ConfigMap(创建、使用、更新、删除等)
3084 0
K8s 中 ConfigMap 使用介绍
ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时,Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap 的主要作用就是为了让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。 官方文档:ConfigMap
1674 0
K8s 中 ConfigMap 使用介绍
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
2454 0
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
k8s学习-持久化存储(Volumes、hostPath、emptyDir、PV、PVC)详解与实战
950 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问