ConfigMaps-1
文章目录
- 主要内容
- 一.使用 YAML 文件创建
- 1.在data节点创建了一些键值:
- 代码如下(示例):
- 2.解释
- 二.使用命令行创建
- 1.创建了一个名为 person 的键值:
- 代码如下(示例):
- 2.解释
- 3.创建了一个 index.html 文件,然后用--from-file 来引用
- 代码如下(示例):
- 4.解释
- 总结
主要内容
- 使用 YAML 文件创建
- 使用命令行创建
预备知识
ConfigMaps 是 Kubernetes 中一种用于存储配置数据的资源对象。它允许您将配置信息(如环境变量、命令行参数、配置文件等)与应用程序分离,以便您可以在不重新构建镜像的情况下更改配置。
ConfigMap 在设计上不是用来保存大量数据的,在 ConfigMap 中保存的数据不可超过 1MiB,如果超出此限制,可能考虑使用挂载存储卷或者使用独立的数据库或者文件服务。
ConfigMaps 可以通过以下两种方式使用:
1. 环境变量:您可以将 ConfigMap 中的键值对映射为容器的环境变量。这样,您的应用程序可以通过读取环境变量来获取配置信息。
**2. 挂载卷:**您可以将 ConfigMap 挂载到容器中的特定路径,使应用程序能够直接读取配置文件。这种方式适用于那些需要读取大量配置文件的应用程序。
下面是使用 ConfigMaps 的一些详细解释:
1. 创建 ConfigMap:
您可以使用 kubectl create configmap
命令从文件或直接从命令行创建 ConfigMap。例如,kubectl create configmap my-config --from-file=config.properties
将从名为 config.properties
的文件创建一个名为 my-config
的 ConfigMap。
2. 查看 ConfigMap:
您可以使用 kubectl get configmaps
命令来查看当前命名空间中的所有 ConfigMaps。使用 kubectl describe configmap <configmap-name>
命令可以查看特定 ConfigMap 的详细信息。
3. 使用 ConfigMap:
要将 ConfigMap 中的配置作为环境变量注入到容器中,您可以在 Pod 的 YAML 配置文件中使用 envFrom
字段。例如:
spec:containers:- name: my-appimage: my-imageenvFrom:- configMapRef:name: my-config
要将 ConfigMap 挂载为卷,您可以在 Pod 的 YAML 配置文件中使用 volumes
和 volumeMounts
字段。例如:
spec:containers:- name: my-appimage: my-imagevolumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: my-config
4. 更新 ConfigMap:
您可以使用 kubectl edit configmap <configmap-name>
命令来编辑 ConfigMap。您还可以使用 kubectl apply -f <configmap-file>
命令来更新 ConfigMap。
5. 删除 ConfigMap:
您可以使用 kubectl delete configmap <configmap-name>
命令来删除 ConfigMap。
这些是使用 ConfigMaps 的一些常见用法和详细解释。ConfigMaps 提供了一种方便的方式来管理和使用配置数据,使您的应用程序更加灵活和可配置。
一.使用 YAML 文件创建
当使用 YAML 文件创建 Kubernetes 资源时,通常需要定义以下几个关键部分:
-
apiVersion
:指定要使用的 Kubernetes API 版本。 -
kind
:指定要创建的资源类型,如 Deployment、Service、ConfigMap 等。 -
metadata
:指定资源的元数据,包括名称、命名空间、标签等。 -
spec
:指定资源的规格,包括容器镜像、端口、环境变量、挂载卷等。
下面是一个使用 YAML 文件创建 Deployment 资源的示例:
apiVersion: apps/v1
kind: Deployment
metadata:name: my-deploymentlabels:app: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: my-imageports:- containerPort: 8080env:- name: ENV_VAR1value: value1- name: ENV_VAR2value: value2volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: my-config
在这个示例中:
apiVersion
设置为apps/v1
,表示使用 Apps API 的版本。kind
设置为Deployment
,表示创建一个 Deployment 资源。metadata
中的name
设置为my-deployment
,表示 Deployment 的名称。spec
中的replicas
设置为 3,表示要创建 3 个 Pod。selector
中的matchLabels
设置为app: my-app
,表示选择具有app: my-app
标签的 Pod。template
中的metadata
中的labels
设置为app: my-app
,表示为 Pod 设置app: my-app
标签。template
中的spec
中的containers
部分定义了容器的规格,包括容器名称、镜像、端口、环境变量等。template
中的spec
中的volumes
部分定义了要挂载的卷,这里使用了一个 ConfigMap 类型的卷。template
中的spec
中的volumeMounts
部分定义了卷的挂载路径。
您可以使用 kubectl create -f <filename>
命令从 YAML 文件创建资源。例如,kubectl create -f deployment.yaml
将从 deployment.yaml
文件中创建 Deployment 资源。
希望这个示例能够帮助您更好地理解如何使用 YAML 文件创建 Kubernetes 资源。
1.在data节点创建了一些键值:
代码如下(示例):
cat > cmyaml.yml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:name: game-demo
data:player_initial_lives: "3"ui_properties_file_name: "tomcat"game.properties: |enemy.types=aliens,monstersplayer.maximum-lives=5
EOF
kubectl create -f cmyaml.yml
kubectl get configmaps
kubectl describe configmaps game-demo
2.解释
上述的 YAML 文件定义了一个名为 game-demo
的 ConfigMap,其中包含了三个键值对:
player_initial_lives
的值为 “3”ui_properties_file_name
的值为 “tomcat”game.properties
的值为一个多行文本,包含了两个配置项:enemy.types=aliens,monsters
和player.maximum-lives=5
以下是对每个命令的详细解释:
-
cat > cmyaml.yml <<EOF
:此命令将 YAML 文件的内容输入到cmyaml.yml
文件中。<<EOF
是一个 shell 的输入重定向符号,表示将输入的内容直到遇到EOF
为止。 -
kubectl create -f cmyaml.yml
:此命令使用kubectl
工具创建 ConfigMap。-f
参数指定要创建的资源的 YAML 文件。 -
kubectl get configmaps
:此命令使用kubectl
工具列出所有的 ConfigMap。 -
kubectl describe configmaps game-demo
:此命令使用kubectl
工具显示名为game-demo
的 ConfigMap 的详细信息。
通过执行上述命令,您将创建一个名为 game-demo
的 ConfigMap,并将其添加到 Kubernetes 集群中。然后,您可以使用 kubectl get configmaps
命令查看所有的 ConfigMap,并使用 kubectl describe configmaps game-demo
命令查看特定 ConfigMap 的详细信息。
二.使用命令行创建
要使用命令行创建 ConfigMap,可以使用 kubectl create configmap
命令。下面是一个使用命令行创建 ConfigMap 的示例:
kubectl create configmap my-config --from-literal=ENV_VAR1=value1 --from-literal=ENV_VAR2=value2
在这个示例中,我们使用 kubectl create configmap
命令创建了一个名为 my-config
的 ConfigMap。--from-literal
参数用于指定要添加到 ConfigMap 的键值对。在这里,我们添加了两个键值对 ENV_VAR1=value1
和 ENV_VAR2=value2
。
要创建一个从文件中读取的 ConfigMap,可以使用 --from-file
参数。例如:
kubectl create configmap my-config --from-file=config.properties
在这个示例中,我们使用 --from-file
参数指定要从文件 config.properties
中读取配置,并创建一个名为 my-config
的 ConfigMap。
要创建一个从目录中读取的 ConfigMap,可以使用 --from-file
参数并指定目录路径。例如:
kubectl create configmap my-config --from-file=configs/
在这个示例中,我们使用 --from-file
参数指定要从目录 configs/
中读取配置,并创建一个名为 my-config
的 ConfigMap。
希望这个示例能够帮助您更好地理解如何使用命令行创建 ConfigMap。使用命令行创建 ConfigMap 可以更快速和便捷地管理配置数据。
1.创建了一个名为 person 的键值:
代码如下(示例):
kubectl create configmap player --from-literal=username=player --from-literal=age=18
kubectl describe configmaps player
2.解释
上述命令使用 kubectl
工具创建了一个名为 player
的 ConfigMap,并向其添加了两个键值对。
--from-literal=username=player
表示将键username
的值设置为player
。--from-literal=age=18
表示将键age
的值设置为18
。
然后,使用 kubectl describe configmaps player
命令来查看 player
ConfigMap 的详细信息。
通过执行上述命令,您将创建一个名为 player
的 ConfigMap,并将其添加到 Kubernetes 集群中。然后,使用 kubectl describe configmaps player
命令可以查看 player
ConfigMap 的详细信息,包括它的名称、命名空间、标签、数据等。
3.创建了一个 index.html 文件,然后用–from-file 来引用
代码如下(示例):
echo hello world! > index.html
kubectl create configmap indexcontent --from-file=index.html
kubectl describe configmaps indexcontent
4.解释
上述命令依次执行以下操作:
-
echo hello world! > index.html
:此命令将字符串 “hello world!” 写入名为index.html
的文件中。 -
kubectl create configmap indexcontent --from-file=index.html
:此命令使用kubectl
工具创建一个名为indexcontent
的 ConfigMap,并将文件index.html
的内容作为值添加到 ConfigMap 中。--from-file
参数指定要从文件中读取数据。 -
kubectl describe configmaps indexcontent
:此命令使用kubectl
工具显示名为indexcontent
的 ConfigMap 的详细信息。
执行上述命令后,您将创建一个名为 indexcontent
的 ConfigMap,并将文件 index.html
的内容添加到 ConfigMap 中。然后,您可以使用 kubectl describe configmaps indexcontent
命令查看 indexcontent
ConfigMap 的详细信息,包括其名称、命名空间、标签、数据等。
总结
以上是今天要讲的内容,学到了ConfiigMaps相关用法,使用YAML文件创建,使用命令行创建。
相关文章:

ConfigMaps-1
文章目录 主要内容一.使用 YAML 文件创建1.在data节点创建了一些键值:代码如下(示例): 2.解释 二.使用命令行创建1.创建了一个名为 person 的键值:代码如下(示例): 2.解释3.创建了一个 index.html 文件&…...
docker上安装es
安装docker 1 安装docker依赖 yum install -y yum-utils2 设置docker仓库镜像地址 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3 安装制定版本的docker yum -y install docker-ce-20.10.17-3.el74 查看是否安装成功 y…...

#循循渐进学51单片机#c语言基础和流水灯实现#not.3
1、熟练掌握二进制、十进制和十六进制的转换方法。 多少进制就是多少之间相加,比如十六进制就是十六一次一加;二进制转化十六进制,分成四个一组。 2、C语言变量类型与取值范围,for、while等基本语句的用法。 for、while等基本语句…...

算法刷题 week3
这里写目录标题 1.重建二叉树题目题解(递归) O(n) 2.二叉树的下一个节点题目题解(模拟) O(h) 3.用两个栈实现队列题目题解(栈,队列) O(n) 1.重建二叉树 题目 题解 (递归) O(n) 递归建立整棵二叉树:先递归创建左右子树,然后创建根节点&…...

TCP详解之流量控制
TCP详解之流量控制 发送方不能无脑的发数据给接收方,要考虑接收方处理能力。 如果一直无脑的发数据给对方,但对方处理不过来,那么就会导致触发重发机制,从而导致网络流量的无端的浪费。 为了解决这种现象发生,TCP 提…...
mac根目录下创建文件不能问题
mac根目录下创建文件不能问题 解决办法2: 原因 mac os引入了系统完整性保护(SIP)机制,无法在/、/usr目录下新建文件 解决办法1: 打开终端,输入 csrutil status显示enabled表示启用了SIP,接下来需要禁用SIP…...
stable diffusion model训练遇到的问题【No module named ‘triton‘】
一天早晨过来,发现昨天还能跑的diffusion代码,突然出现了【No module named ‘triton’】的问题,导致本就不富裕的显存和优化速度雪上加霜,因此好好探究了解决方案。 首先是原因,由于早晨过来发现【电脑重启】导致了【…...
线性dp,优化记录,273. 分级
273. 分级 273. 分级 - AcWing题库 给定长度为 N 的序列 A,构造一个长度为 N 的序列 B,满足: B 非严格单调,即 B1≤B2≤…≤BN 或 B1≥B2≥…≥BN。最小化 S∑Ni1|Ai−Bi|。 只需要求出这个最小值 S。 输入格式 第一行包含一…...

JWT 安全及案例实战
文章目录 一、JWT (json web token)安全1. Cookie(放在浏览器)2. Session(放在服务器)3. Token4. JWT (json web token)4.1 头部4.1.1 alg4.1.2 typ 4.2 payload4.3 签名4.4 通信流程 5. 防御措施 二、漏洞实例(webgoa…...

Vue2+Vue3
文章目录 Vue快速上手Vue是什么第一个Vue程序插值表达式Vue核心特性:响应式 Vue指令v-htmlv-show 与 v-ifv-else 与 v-else-ifv-onv-bindv-forv-model指令修饰符 计算属性watch侦听器(监视器)watch——简写watch——完整写法 Vue生命周期 和 …...

华为云云耀云服务器L实例评测|redis漏洞回顾 MySQL数据安全解决 搭建主从集群MySQL 相关设置
前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到过MySQL数据库被攻击的情况,数据丢失,还好我有几份备份,没有造成太大的损失;后来有发现Redis数据库被攻击的情况,加入了redis密…...

【C++】详解std::thread
2023年9月10日,周日下午开始 2023年9月10日,周日晚上23:35完成 虽然这篇博客我今天花了很多时间去写,但是我对std::thread有了一个完整的认识 不过有些内容还没完善,以后有空再更新.... 目录 头文件类的成员类型方法(construc…...

Apache HTTPD 漏洞复现
文章目录 Apache HTTPD 漏洞复现1. Apache HTTPD 多后缀解析漏洞1.1 漏洞描述1.2 漏洞复现1.3 漏洞利用1.4 获取GetShell1.5 漏洞防御 2. Apache HTTPD 换行解析漏洞-CVE-2017-157152.1 漏洞描述2.2 漏洞复现2.3 漏洞利用2.4 修复建议 3. Apache HTTP Server_2.4.49 路径遍历和…...
【C++从入门到精通】第2篇:C++基础知识(中)
文章目录 2.1 iostream介绍:cout、cin和endl2.1.1 输入/输出库2.1.2 std::cout2.1.3 std::endl2.1.4 std::cout是缓冲的2.1.5 std::endl与\n2.1.6 std::cin2.1.7 总结2.1.8 练习时间 2.2 未初始化的变量和未定义的行为2.2.1 未初始化的变量2.2.2 未定义行为2.2.3 明…...
【RuoYi移动端】uni-app中实现生成二维码功能(代码示例)
完整示例: <template><view><view class"titleBar">执法检查“通行码”信息</view><view class"twoCode"><canvas canvas-id"qrcode"></canvas></view></view> </templat…...

深度解剖数据在栈中的应用
> 作者简介:დ旧言~,目前大一,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 望小伙伴们点赞👍收藏✨加关注哟💕…...
Android10 SystemUI系列 需求定制(一)状态栏控制中心默认tile定制属性适配
一、前言 SystemUI 所包含的界面和模块比较多,这一节主要分享一下控制中心默认tile 列表的实现,通过配置可以实现 下拉状态栏,控制中心默认的tile显示 二、准备工作 按照惯例先找一下控制中心的代码,主要在下面这个路径下 frameworks/base/packages/SystemUI/src/com/andr…...

【微信小程序】文章设置
设置基本字体样式:行高、首行缩进 font-size: 32rpx;line-height: 1.6em;text-indent: 2em;padding: 20rpx 0;border-bottom: 1px dashed var(--themColor); 两端对齐 text-align: justify; css文字两行或者几行显示省略号 css文字两行或者几行显示省略号_css…...
程序员在线周刊(冒泡算法篇)
大家好,欢迎来到程序员在线周刊!本期我们将深入探讨一种经典的排序算法——冒泡算法,并附上具体的代码实现。 目录 简介代码原理广告广告1广告2广告3 简介 冒泡算法是一种简单但效率较低的排序算法,它的原理非常直观:…...

string
目录 六、STL简介 (一)什么是STL (二)STL的版本 (三)STL六大组件 七、string (一)标准库中的string 1、string类 2、string常用的接口 1)string类对象的常见构造 2)string类对象的容量操作 3)string类对象的访问及遍历操作 4)string类对象的修改操作 5)string类非成…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...