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

相关文章
|
存储 安全 Cloud Native
Nacos 2.1.0发布,支持特性定制插件
Nacos 全称为 Dynamic Naming and Configuration Service,其目标是更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 诞生于阿里巴巴 2008 年的五彩石项目,在阿里十年双 11 中成长,帮助业务解决微服务的扩展性和高可用问题。
Nacos 2.1.0发布,支持特性定制插件
|
1月前
|
数据安全/隐私保护 iOS开发 Docker
MacOS安装DockerDesktop完整指南(从下载到汉化一步到位)
本教程详细讲解在MacOS上安装DockerDesktop并实现汉化的完整步骤,涵盖系统要求、下载安装、配置验证及中文界面设置,适合新手快速上手,助你轻松掌握Mac上的Docker使用。
|
安全 架构师 编译器
鲲鹏开发重点-–扭转x86乾坤的挑战,ARM64内存模型
因为X86及其CISC架构生态的封闭性,中国市场对未来处理器的选择,将是更开放、更模块化的RISC架构。 鲲鹏处理器就是符合这个潮流的创新产品和生态,将直面一系列挑战,和Apple一样赢得这场挑战,来扭转X86的封闭性的乾坤,创造出中国的处理器新生态。
1723 0
鲲鹏开发重点-–扭转x86乾坤的挑战,ARM64内存模型
|
11月前
|
人工智能 运维 API
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
云栖大会 | Terraform从入门到实践:快速构建你的第一张业务网络
502 1
|
安全 算法 Java
MSE Nacos 2.3.2.0 发布,性能最多提升三倍,支持操作审计等安全特性
MSE Nacos 是阿里云推出的托管式注册配置中心。它基于阿里云开源产品 Nacos 构建,100% 兼容开源协议,同时在稳定性、安全性、性能、易用性等方面做了增强。不久前,我们发布了 MSE Nacos 2.3.2.0 版本,在性能、安全性方面大幅升级。
420 87
|
10月前
|
机器学习/深度学习 人工智能 算法
HumanRig:高德地图提出在大规模数据集中学习人形角色的自动绑定技术,数据集开源!
HumanRig:高德地图提出在大规模数据集中学习人形角色的自动绑定技术,数据集开源!
575 88
|
10月前
|
人工智能 关系型数据库 MySQL
《深度探秘:解锁开源社区中MySQL与AI集成的资源宝库》
在数据管理与AI融合的前沿领域,MySQL与AI的集成成为开发者和数据科学家关注的焦点。开源社区作为技术爱好者的智慧殿堂,提供了丰富的支持与资源。本文从开源社区的活力生态出发,探讨如何通过专业论坛、代码托管平台及技术博客精准获取资源,并通过深度参与社区互动、筛选整合优质内容,构建个人知识体系。掌握这些方法,不仅能提升技术能力,还能推动MySQL与AI集成在实际项目中的创新应用,为数据驱动的未来贡献力量。
285 26
|
弹性计算 人工智能 运维
Terraform从入门到实践:快速构建你的第一张业务网络(上)
本次分享主题为《Terraform从入门到实践:快速构建你的第一张业务网络》。首先介绍如何入门和实践Terraform,随后演示如何使用Terraform快速构建业务网络。内容涵盖云上运维挑战及IaC解决方案,并重磅发布Terraform Explorer产品,旨在降低使用门槛并提升用户体验。此外,还将分享Terraform在实际生产中的最佳实践,帮助解决云上运维难题。
1051 1
Terraform从入门到实践:快速构建你的第一张业务网络(上)
|
搜索推荐
IDEA中设置背景图片(超详细)
这篇文章提供了在IntelliJ IDEA中设置背景图片的详细步骤,包括安装Background Image Plus插件和调整图片透明度等个性化设置。
IDEA中设置背景图片(超详细)