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”的执行结果如下:
$ 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&timestamp=1580801348&ver=2137&signature=HKFTl*LaaCIIICFtRbSHyCYN6DnTy44PQbm3VJYhtvoDjlts6KtpCLmZCRVMFbHitpVElFNi0dXsD1DEgpr3V6yULBXtd0XhVkO67SG8xE-fJGdyf-iwv4NSaL8FMayl&new=1

相关文章
|
存储 Kubernetes 调度
【K8S系列】第二讲:Pod入门
【K8S系列】第二讲:Pod入门
122 0
|
11月前
|
存储 Kubernetes NoSQL
k8s 学习九,pod 知识点 上
k8s 学习九,pod 知识点 上
212 0
|
Kubernetes 安全 Linux
Pod必备知识: SecurityContexts
Security Context主要用于限制容器的行为,从而保障系统和其他容器的安全。这一块的能力不是 Kubernetes 或者容器 runtime 本身的能力,而是 Kubernetes 和 runtime 通过用户的配置,最后下传到内核里,再通过内核的机制让 SecurityContext 来生效。所以这里介绍的内容,会比较简单或者说比较抽象一点。 1.容器级别的Security Context:仅对指定容器生效 2.Pod级别的Security Context:对指定Pod中的所有容器生效 3.Pod Security Policies(PSP):对集群内所有Pod生效
1615 0
Pod必备知识: SecurityContexts
|
存储 Kubernetes 安全
Kubernetes必备知识: PersistentVolumeClaim
PersistentVolumeClaim(简称PVC)是用户存储的请求,PVC消耗PV的资源,可以请求特定的大小和访问模式,需要指定归属于某个Namespace,在同一个Namespace的Pod才可以指定对应的PVC。 当需要不同性质的PV来满足存储需求时,可以使用StorageClass来实现。 每个 PVC 中都包含一个 spec 规格字段和一个 status 声明状态字段。
3722 0
Kubernetes必备知识: PersistentVolumeClaim
|
6月前
|
存储 Kubernetes 应用服务中间件
【CKA模拟题】综合演练演示Pod如何引用PVC的资源
【CKA模拟题】综合演练演示Pod如何引用PVC的资源
136 2
|
存储 Kubernetes NoSQL
【k8s 系列】k8s 学习九,pod 知识点 上
在 K8S 中, pod 是一个非常关键的存在,我们一起来看看 pod 具体是个什么?
160 0
|
11月前
|
Kubernetes API 调度
pod 知识点 下
pod 知识点 下
|
6月前
|
Kubernetes 应用服务中间件 调度
k8s学习-CKA真题-Pod指定节点部署
k8s学习-CKA真题-Pod指定节点部署
61 0
|
6月前
|
Kubernetes 容器 Perl
k8s学习-CKA真题-一个Pod封装多个容器
k8s学习-CKA真题-一个Pod封装多个容器
80 0
|
存储 Kubernetes API
【k8s 系列】k8s 学习十,pod 知识点 下
上一篇分享了 pod 的基本知识点,有 K8S 环境的小伙伴还是可以用起来的,还对比较简单,知道了 pod 的 yaml 文件结构,标识,基本的创建 pod 和删除 pod 的用法等等,我们继续
123 0