大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

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:25748

评论

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

华为云助力制造业高效实现数字化转型

科技怪授

软件测试/测试开发丨该如何测客户端专项测试?

测试人

软件测试 自动化测试 测试开发 专项测试

趣谈之什么是 API 货币化?

API7.ai 技术团队

api 网关 APISIX api 货币化

阿里正式加入ChatGPT战局,“通义千问”上线后表现如何?

引迈信息

AI 阿里 低代码 语言模型 ChatGPT

新晋 Committer 也有 “产学研联动”?速来围观不同视角共建 IoTDB 社区的故事!

Apache IoTDB

IoTDB Apache IoTDB

架构师应该具备的特质

agnostic

架构师

BUFF NETWORK:去中心化衍生品交易的未来

股市老人

Go 语言读取文件的几种方式

宇宙之一粟

Go 语言

如何使用文件传输协议ftp,教你使用文件传输协议命令行

镭速

ChatGPT-5到底有多强?Battle!咱貌似也不输呀!

加入高科技仿生人

人工智能 AI 低代码 ChatGPT GPT-4

前端技术培训学习哪个机构靠谱?

小谷哥

华为云推出场景化解决方案帮助制造企业加速数字化转型

科技怪授

打卡智能中国(三):一位水厂文员的多重身份

脑极体

云计算

多库多表场景下使用 Amazon EMR CDC 实时入湖最佳实践

亚马逊云科技 (Amazon Web Services)

Java

谈谈现在编程行业的热门话题| 社区征文

魏铁锤

三周年征文

“PMC零距离” 赖晖:在 IoTDB 我实现了参与贡献共识协议的兴趣方向!

Apache IoTDB

IoTDB Apache IoTDB

IoTDB Raft协议核心研发宋子阳成为Ratis Committer:分布式IoTDB深度并创新运用Raft协议保障高可用

Apache IoTDB

IoTDB Apache IoTDB

华为云助力制造业解决数字化转型困局:高效上云,加速创新

科技怪授

前端线下面授培训机构该怎么选择

小谷哥

翻过三座大山:MatrixOne从 NewSQL 到 HTAP 分布式架构演进

MatrixOrigin

分布式数据库 MatrixOrigin MatrixOne 架构升级

历史性的时刻!华为云跨端、跨框架开源组件库项目 OpenTiny 正式升级 TypeScript,10 万行代码重获新生!

英勇无比的消炎药

开源 前端 UI组件库

码头风云——5G降临

白洞计划

5G 智慧码头

什么是安全沙箱技术?如何保护用户隐私和系统安全?

FinFish

前端容器 小程序容器 安全沙箱 小程序安全沙箱

StarRocks 3.0 新特性介绍

StarRocks

c++ 数据湖 #java 数据库· 大数据‘’

Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库

xuri

开源 编程 Excel Go 语言 Excelize

华为云ERP上云解决方案助力企业迈向云端,提升业务效率与安全性

i生活i科技

如何解决制造企业数字化转型中的数据散乱和管理难题,实现顺利转型?

i生活i科技

3DCAT实时云渲染助力数字孪生检修车间建设,为智能制造赋能!

3DCAT实时渲染

数字孪生 实时渲染 3D实时云渲染

借力函数计算 FC,HEROZ 打造专业级 AI 日本将棋服务

阿里巴巴云原生

阿里云 云原生 函数计算

技术实力与社区贡献的双重认可!乔嘉林成为 Apache 软件基金会 Member

Apache IoTDB

IoTDB Apache IoTDB

时序数据库能做什么|用 GreptimeDB 进行程序员键盘行为分析,最高频按键竟然是它

Greptime 格睿科技

云原生 时序数据库 数据库·

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