2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

Kubernetes 1.2 新功能解析:ConfigMap (中)

  • 2020-03-13
  • 本文字数:2108 字

    阅读完需:约 7 分钟

Kubernetes 1.2 新功能解析:ConfigMap (中)

使用 ConfigMap

很多应用程序的配置需要通过配置文件,命令行参数和环境变量的组合配置来完成。这些配置应该从 image 内容中解耦,以此来保持容器化应用程序的便携性。ConfigMap API 资源提供了将配置数据注入容器的方式,同时保持容器是不知道 Kubernetes 的。ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象。

ConfigMap 总览

ConfigMap API 资源保持键-值对配置数据,这个数据可以在 pods 里使用,或者被用来为像 controller 一样的系统组件存储配置数据。虽然 ConfigMap 跟 Secrets 类似,但是 configmap 可以更方便的处理不包含敏感信息的字符串


让我们来看看完成的例子吧:



data 一栏包括了配置数据。就如同你们看到的那样,ConfigMap 可以被用来保存单个属性,也可以用来保存一个配置文件。


配置数据可以通过很多种方式在 Pods 里被使用。ConfigMaps 可以被用来:


1、设置环境变量的值


2、在容器里设置命令行参数


3、在数据卷里面创建 config 文件


用户和系统组件两者都可以在 ConfigMap 里面存储配置数据。

创建 ConfigMaps

你可以使用 kubectl create configmap 命令轻松从文字值、文件或者目录来创建 ConfigMaps。


让我们来看一看创建 ConfigMap 的很多不同的方法吧:

从目录创建

现在我们已经有一个包含一些文件的目录,它已经包含了我们想要设置 ConfigMaps 的数据:



kubectl create configmap 命令可以被用来创建 ConfigMap 来存储这个目录里面每个文件的内容:



当–from-file 指向目录的时候,每个在目录底下的所有文件会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容。


让我们来看一下这个命令创建的 ConfigMap:



你可以看到在映射里面的两个是从 kubectl 指定的目录中创建的文件名。这些键的内容可能会很大,所以在 kubectl describe 的输出中,你只能够看到键的名字和他们的大小。


如果我们想要看到键的值的话,我们可以仅仅只是 kubectl get 资源:


从文件创建

我们也可以传递给–from-file 一个特定文件,并且多次传递到 kubectl。以下命令跟上文例子中的结果是一样的:



我们也可以用 --from-file 通过传递 key=value 为个别文件设置键来使用:


--from-file=game-special-key=docs/user-guide/configmap/kubectl/game.properties 
复制代码



从字面值创建

为 ConfigMap 使用 kubectl create configmap 提供字面值。–from-literal 选项采用了 语法,这个语法允许字面值被直接运用到命令行:


在 pods 里面使用 ConfigMap

使用案例:在环境变量中使用 ConfigMap


ConfigMap 可以被用来填入环境变量。举个例子,思考以下的 ConfigMap:



我们可以像这样在一个 pod 中来使用这个 ConfigMap 的键:



当这个 pod 运行的时候,它的输出将包括以下几行:


使用案例:用 ConfigMap 设置命令行参数

ConfigMap 也可以被使用来设置容器中的命令或者参数值。这是一个已经完成的使用 Kubernetes$(VAR_NAME)替换的语法。考虑 ConfigMap:



为了输入值到命令行里面,我们必须使用我们想要使用的键来作为环境变量,就如在上一个例子中的一样。然后我们可以参考他们,在容器的命令里使用 $(VAR_NAME)语法。



当这个 pod 正在运行的时候,从 test-container 容器的输出将会是:


使用案例:通过数据卷插件使用 ConfigMap

ConfigMap 也可以在数据卷里面被使用。再次回到我们的 ConfigMap 的例子:



在数据卷里面使用这个 ConfigMap,我们有不同的选项。最基本的就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容:



当这个 pod 运行的时候,输出是这样的:



我们也可以在 ConfigMap 值被映射的数据卷里控制路径。



当 pod 运行的时候,输出是这样的:


真实案例:配置 Redis

让我们来看一下真实的案例:用 Configmap 配置 redis。我们想要将 redis 作为一个缓存用推荐配置来输入 redis。Redis 配置应该包括:



docs/user-guide/configmap/redis 里面有这样一个文件;有了它,我们可以使用下面的命令来创建一个 ConfigMap 实例:




现在,让我们用这个配置来创建一个 pod:



注意,这个 pod 有一个 ConfigMap 数据卷,它在一个叫 redis.conf 的文件里替代了 example-redis-config ConfigMap 的 redis-config 密钥。这个数据卷增长到 redis 容器的 /redis-master 目录里,在/redis-master/redis.conf 里替代了我们的配置文件,/redis-master/redis.conf


就是 image 为 master 查找的 redis 配置文件。



如果我们 kubectl exec 到这个 pod,并且运行 redis-cli 工具,我们可以检查到我们的配置被正确运用:


限制条件

ConfigMaps 必须在 pod 中被使用之前创建。Controllers 可以会被写来容忍某些配置文件数据的缺失。Configmaps 属于 namespace。他们只有在相同的 namespaces 中通过 pods 被引用。


ConfigMap 大小的配额是已经一个设置好的功能。


Kubelet 只支持从 API 服务器的 pods 使用 ConfigMap。这包括了任意的用 Kubectl 创建的 pods,或者间接的通过 replication controller 创建的 pods。它不包括通过 Kubelet 的 --manifest-url 标志创建的 pods,也不包括从它的 REST API 创建的 pods(一般不用这些方法创建 pods)。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/qBL9P6LkU4_ko_o33IuqZg


2020-03-13 17:25700

评论

发布
暂无评论
发现更多内容

大数据开发培训中心有哪些

小谷哥

大数据培训学习包含java技术吗

小谷哥

保险行业需要一个安全的大数据传输

镭速

基于Web的6个完美3D图形WebGL库

2D3D前端可视化开发

前端开发 WebGL webgl库 3d图形库 webgl框架

TO B Ask100-1、2| 破解“ All in one”悖论;如何降低客户成功成本?

B Impact

西安java培训班哪家好?

小谷哥

通过案例理解MQTT主题与通配符

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 通配符

武汉前端开发培训哪家比较好

小谷哥

JuiceFS 在火山引擎边缘计算的应用实践

火山引擎边缘云

边缘计算 存储 JuiceFS 火山引擎 渲染

使用Python+Opencv从摄像头逐帧读取图片保存在本地

Python 数据读取 摄像头

HummerRisk V0.9.1:操作审计增加百度云、增加主机检测规则等

HummerCloud

云安全 云原生安全

Web、移动端、桌面端自动化测试工具或框架推荐

软件测试 自动化测试 自动化框架

产品价值“三省”

QualityFocus

API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

华为云PaaS服务小智

API

F5 2022财年安全营收10亿美金 服务应用安全做了哪些事?

F5 Inc

移动应用 安全 应用安全

VOP消息仓库演进之路|如何设计一个亿级企业消息平台

京东科技开发者

软件架构 平台 VOP 客户调用 消息仓库

前端开发哪家培训机构教的好

小谷哥

StoneDB 源码解读系列|Tianmu 引擎工具类模块源码详解(一)

StoneDB

数据库 开源 HTAP StoneDB 企业号 2 月 PK 榜

小游戏也能脱离微信运行到自己的app中

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

「 Java基础-泛型 」一文说清Java泛型中的通配符T、E、K、V、N、?和Object的区别和含义

小刘学编程

Java 源码阅读 Java泛型 构架师

Python读写txt文本(示例说明)

Python 数据读取 txt

Python读execl之xlrd库函数详解一:工作簿相关

Python Excel 数据读取

恭喜! SelectDB 五位开发者成为 Apache Doris 新晋 PMC 成员和 Committer!

SelectDB

数据湖 Doris 程序猿 ;开源 企业号 2 月 PK 榜

敏捷管理到底有没有捷径可走?

Onegun

开源 将本增效 敏捷迭代

不是留给飞书的时间不够,而是中国To B需要重塑时间观

B Impact

Linux中Sl命令的使用

Linux 操作系统 命令

新春发版,大展宏“兔”:StoneDB-5.7-V1.0.2 版本正式发布!两分钟快速部署安装您的分析加速器~

StoneDB

开源 数据库· StoneDB 企业号 2 月 PK 榜

实践指南|如何在 Jina 中使用 OpenTelemetry 进行应用程序的监控和跟踪

Jina AI

Python 微服务 PyTorch 云技术 OpenTelemetry

嵌入式ARM设计编程(三) 处理器工作模式

timerring

arm

重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势

极狐GitLab

DevOps 安全 DevSecOps 安全左移 供应链安全

Kubernetes 1.2 新功能解析:ConfigMap (中)_语言 & 开发_才云科技_InfoQ精选文章