ConfigMaps-2

news2024/11/16 22:25:49

主要内容

  1. Volume 挂载 ConfigMap
  2. 环境变量 ConfigMap

一.Volume 挂载 ConfigMap

在 Kubernetes 中,可以使用 Volume 来将 ConfigMap 挂载到 Pod 中。这样,Pod 中的容器就可以通过文件系统访问 ConfigMap 中的配置数据。

要将 ConfigMap 挂载到 Pod 中,需要执行以下步骤:

  1. 创建 ConfigMap:首先,需要创建一个 ConfigMap 对象来存储配置数据。可以使用 kubectl create configmap 命令或通过 YAML 文件创建 ConfigMap。

  2. 定义 Volume:在 Pod 的规格(spec)中,需要定义一个 Volume,将其类型设置为 ConfigMap,并指定要挂载的 ConfigMap 的名称。

  3. 配置容器:在 Pod 的规格中,需要将 Volume 挂载到容器中的某个目录。可以使用 volumeMounts 字段将 Volume 挂载到容器中,并指定挂载路径。

下面是一个示例,展示了如何将 ConfigMap 挂载到 Pod 中:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      volumeMounts:
        - name: config-volume
          mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: my-config

在这个示例中:

  • volumes 字段定义了一个名为 config-volume 的 Volume,类型为 ConfigMap,并指定要挂载的 ConfigMap 的名称为 my-config

  • volumeMounts 字段将 config-volume 挂载到容器的 /etc/config 目录。

这样,当 Pod 启动时,Kubernetes 会自动将 ConfigMap 中的配置数据挂载到 /etc/config 目录,容器就可以通过文件系统访问这些配置数据了。

需要注意的是,如果 ConfigMap 中的配置数据发生更改,挂载到 Pod 的 Volume 不会自动更新。如果想要更新 Pod 中的配置数据,可以重启 Pod 或使用 ConfigMap 的热更新功能。

希望这个解释能够帮助您理解如何将 ConfigMap 挂载到 Pod 中。

1.创建一个Pod,起挂载的内容,将来自下面的configmap:

代码如下(示例):
cat > cmvolume.yml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: configmapvolume
  labels:
    app: configmaptest
spec:
  containers:
    - name: test
      image: httpd
      imagePullPolicy: IfNotPresent
      volumeMounts:
        - name: index
          mountPath: /usr/local/apache2/htdocs
  volumes:
    - name: index
      configMap:
        name: indexcontent
EOF

kubectl create -f cmvolume.yml 
kubectl get -f cmvolume.yml -o wide 

kubectl delete -f cmvolume.yml

在这里插入图片描述

2.解释

上述命令依次执行以下操作:

  1. cat > cmvolume.yml <<EOF:此命令将 YAML 文件的内容输入到 cmvolume.yml 文件中。<<EOF 是一个 shell 的输入重定向符号,表示将输入的内容直到遇到 EOF 为止。

  2. kubectl create -f cmvolume.yml:此命令使用 kubectl 工具根据 cmvolume.yml 文件中的配置创建一个 Pod。

  3. kubectl get -f cmvolume.yml -o wide:此命令使用 kubectl 工具获取 Pod 的详细信息,并使用 -o wide 参数以更详细的格式显示输出。

  4. kubectl delete -f cmvolume.yml:此命令使用 kubectl 工具根据 cmvolume.yml 文件中的配置删除一个 Pod。

通过执行上述命令,您将创建一个名为 configmapvolume 的 Pod,并将其配置为使用名为 indexcontent 的 ConfigMap 中的数据作为卷挂载到容器的 /usr/local/apache2/htdocs 目录中。然后,您可以使用 kubectl get -f cmvolume.yml -o wide 命令查看 Pod 的详细信息,包括名称、标签、IP 地址等。最后,使用 kubectl delete -f cmvolume.yml 命令删除该 Pod。


二.环境变量 ConfigMap

在 Kubernetes 中,可以使用 ConfigMap 来存储环境变量的配置数据。ConfigMap 是一种用于存储非敏感数据的 Kubernetes 资源,可以包含键值对、配置文件或者整个目录。

使用 ConfigMap 存储环境变量的好处是可以将配置数据与容器的定义分离,使得容器的配置更加灵活和可维护。通过将环境变量配置在 ConfigMap 中,可以在不修改容器镜像的情况下,动态地更新容器的配置。

要使用 ConfigMap 存储环境变量,需要执行以下步骤:

  1. 创建 ConfigMap:首先,需要创建一个 ConfigMap 对象来存储环境变量的配置数据。可以使用 kubectl create configmap 命令或通过 YAML 文件创建 ConfigMap。

  2. 在 Pod 中使用 ConfigMap:在 Pod 的规格(spec)中,可以使用 env 字段来定义环境变量。可以通过 valueFrom.configMapKeyRef 来引用 ConfigMap 中的键值对,并将其作为环境变量的值。

下面是一个示例,展示了如何使用 ConfigMap 存储环境变量:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  ENV_VAR1: value1
  ENV_VAR2: value2
---
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image
      env:
        - name: ENV_VAR1
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: ENV_VAR1
        - name: ENV_VAR2
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: ENV_VAR2

在这个示例中:

  • 首先,我们创建了一个名为 my-config 的 ConfigMap,其中包含了两个键值对 ENV_VAR1: value1ENV_VAR2: value2

  • 然后,我们创建了一个名为 my-pod 的 Pod,其中包含了一个名为 my-container 的容器。

  • 在容器的环境变量定义中,我们使用 valueFrom.configMapKeyRef 来引用 ConfigMap 中的键值对。例如,ENV_VAR1 的值来自于 ConfigMap my-config 中的键 ENV_VAR1

这样,当 Pod 启动时,Kubernetes 会自动将 ConfigMap 中的键值对作为环境变量注入到容器中。容器就可以通过环境变量访问这些配置数据了。

需要注意的是,如果 ConfigMap 中的配置数据发生更改,挂载到 Pod 的环境变量不会自动更新。如果想要更新 Pod 中的环境变量,可以重启 Pod 或使用 ConfigMap 的热更新功能。

希望这个解释能够帮助您理解如何使用 ConfigMap 存储环境变量。使用 ConfigMap 可以更好地管理容器的配置,并实现配置与容器定义的分离。

1.创建一个名为 mysqlpass 且包含 password=ABCabc123 的 configmap:

代码如下(示例):
kubectl create configmap mysqlpw --from-literal=password=ABCabc123
cat > cmenv.yml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: mysql
spec:
  containers:
    - name: mysqlname
      image: mysql
      imagePullPolicy: IfNotPresent
      env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            configMapKeyRef:
              name: mysqlpw
              key: password
EOF

2.解释

上述命令依次执行以下操作:

  1. kubectl create configmap mysqlpw --from-literal=password=ABCabc123:此命令使用 kubectl 工具创建一个名为 mysqlpw 的 ConfigMap,并将 password 键的值设置为 ABCabc123--from-literal 参数指定要从字面值创建 ConfigMap。

  2. cat > cmenv.yml <<EOF:此命令将 YAML 文件的内容输入到 cmenv.yml 文件中。<<EOF 是一个 shell 的输入重定向符号,表示将输入的内容直到遇到 EOF 为止。

  3. apiVersion: v1:这是一个 YAML 文件中的配置项,指定要创建的资源的 API 版本。

  4. kind: Pod:这是一个 YAML 文件中的配置项,指定要创建的资源类型为 Pod。

  5. metadata: name: mysql:这是一个 YAML 文件中的配置项,指定要创建的 Pod 的名称为 mysql

  6. spec: containers::这是一个 YAML 文件中的配置项,指定 Pod 的规范,其中 containers 是一个列表,可以指定多个容器。

  7. - name: mysqlname:这是一个 YAML 文件中的配置项,指定容器的名称为 mysqlname

  8. image: mysql:这是一个 YAML 文件中的配置项,指定容器要使用的镜像为 mysql

  9. imagePullPolicy: IfNotPresent:这是一个 YAML 文件中的配置项,指定容器的镜像拉取策略为 IfNotPresent,即只在本地不存在该镜像时才拉取。

  10. env::这是一个 YAML 文件中的配置项,指定容器的环境变量,其中 env 是一个列表,可以指定多个环境变量。

  11. - name: MYSQL_ROOT_PASSWORD:这是一个 YAML 文件中的配置项,指定环境变量的名称为 MYSQL_ROOT_PASSWORD

  12. valueFrom: configMapKeyRef::这是一个 YAML 文件中的配置项,指定环境变量的值从 ConfigMap 中获取。

  13. name: mysqlpw:这是一个 YAML 文件中的配置项,指定要使用的 ConfigMap 的名称为 mysqlpw

  14. key: password:这是一个 YAML 文件中的配置项,指定要从 ConfigMap 中获取的键为 password

通过执行上述命令,您将创建一个名为 mysqlpw 的 ConfigMap,并将其添加到 Kubernetes 集群中。然后,使用 kubectl create -f cmenv.yml 命令可以创建一个名为 mysql 的 Pod,该 Pod 包含一个名为 mysqlname 的容器。容器中的环境变量 MYSQL_ROOT_PASSWORD 的值将从 ConfigMap mysqlpw 中的 password 键获取。

3.创建一个名为 mysqlpass 且包含 password=ABCabc123 的 configmap:

代码如下(示例):
kubectl create -f cmenv.yml 
kubectl exec -it mysql -- mysql -uroot -pABCabc123

kubectl describe configmaps mysqlpass 
kubectl delete -f cmenv.yml 

在这里插入图片描述
因为 configMap 是明文的,通常用于配置文件等明文场景,但数据库口令等密文应该使用 secret。
在这里插入图片描述

4.解释

  1. kubectl create -f cmenv.yml:此命令将使用 kubectl 工具根据 cmenv.yml 文件中的配置创建一个 Pod。该 Pod 的名称为 mysql,其中包含一个名为 mysqlname 的容器。容器使用 mysql 镜像,并从 ConfigMap mysqlpw 中获取环境变量 MYSQL_ROOT_PASSWORD 的值。

  2. kubectl exec -it mysql -- mysql -uroot -pABCabc123:此命令将使用 kubectl 工具在运行名为 mysql 的 Pod 的容器中执行命令。命令是 mysql -uroot -pABCabc123,意味着以 root 用户身份连接到 MySQL 数据库,并提供密码 ABCabc123

  3. kubectl describe configmaps mysqlpass:此命令将使用 kubectl 工具获取名为 mysqlpass 的 ConfigMap 的详细信息,包括名称、命名空间、数据等。

  4. kubectl delete -f cmenv.yml:此命令将使用 kubectl 工具根据 cmenv.yml 文件中的配置删除先前创建的 Pod。


总结

以上是今天要讲的内容,学到了Volume 挂载 ConfigMap,环境变量 ConfigMap。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一、二题见贴图第三题 实现求1-100之间的质数?

print("模式A") while True: for i in range (1,7): for j in range(1, 7): if j < i: print(j,end"\t") print() break print() print("模式B") while True: for i in range (6,…

【测开】Java快转Python 学习路径记录

写在前面 工作后需要用python&#xff0c;记录下学习的一些资料和总结&#xff0c;仅供参考&#xff0c;希望对你有帮助。 2023/9/8 (碎碎念&#xff1a;我太懂工作要用时自己却不会的感觉了…心好累&#xff0c;问大家怎么学就说这简单…md记录一下&#xff09; Part.1 对比 …

基于Java汽车服务商城系统 设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

知识图谱(3)关系抽取

信息抽取旨在从大规模非结构化或半结构化的自然语言文本中抽取结构化信息。关系抽取是其中的重要子任务&#xff0c;主要目的是从文本中识别实体并抽取实体之间的语义关系。 比如有下面的文本&#xff1a; International Business Machines Corporation (IBM or the company) …

2019-2021年上市公司润灵ESG评分评级数据

2019-2021年上市公司润灵ESG评分评级数据 1、时间&#xff1a;2019-2021年 2、指标&#xff1a;股票代码、股票简称、评级年份、所属指数名称、GICS行业一级分类、GICS行业一级分类代码、GICS行业二级分类、GICS行业二级分类代码、GICS行业三级分类、GICS行业三级分类代码、E…

【Qt 图形视图框架】QGraphics分析及使用

组成 Qt 图形视图框架分为三部分&#xff1a;场景、视图、图元。 场景对于程序来说&#xff0c;场景是不可见的&#xff0c;是一个抽象的管理图形项的容器。 可以向场景中添加图形项&#xff0c;比如&#xff1a;圆形、矩形、三角形等等 此外&#xff0c;还可以获取场景中的某…

games101 作业2

题目 光栅化一个三角形 1. 创建三角形的 2 维 bounding box。 2. 遍历此 bounding box 内的所有像素&#xff08;使用其整数索引&#xff09;。然后&#xff0c;使用像素中心的屏幕空间坐标来检查中心点是否在三角形内。 3. 如果在内部&#xff0c;则将其位置处的插值深度值 (…

GICv3学习

GICv3学习 参考文档&#xff1a; 《corelink_gic600_generic_interrupt_controller_technical_reference_manual_100336_0106_00_en》 《IHI0069H_gic_architecture_specification》 《ECM0495013B_GIC_Stream_Protocol》 一、GICv3寄存器接口 接口如下图所示&#xff1a…

手搭手入门Mybatis-Plus配置多数据源

https://baomidou.com/ Mybatis-Plus介绍 为简化开发而生 MyBatis-Plus(opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 特性 无…

Python 多线程概述

视频版教程 Python3零基础7天入门实战视频教程 几乎所有的操作系统都支持同时运行多个任务&#xff0c;一个任务通常就是一个程序&#xff0c;每一个运行中的程序就是一个进程。当一个程序运行时&#xff0c;内部可能包含多个顺序执行流&#xff0c;每一个顺序执行流就是一个线…

指针笔试题

目录 指针笔试题 NO1. NO2. NO3. NO4. NO5.✔ NO6. NO7. NO8.✔ 今天接着继续指针练习。&#x1f642;&#x1f642;&#x1f642; 指针笔试题 NO1. //指针的类型 //转化后的类型 //解引用访问根据指针类型访问几个字节 //整型在内存中的存储------小端存储 //*解引…

项目上线部署--》服务器部署流程(二)安装Nginx、Node.js、MySQL

阅读本篇文章前请先阅读项目上线部署--》服务器部署流程&#xff08;一&#xff09; 目录 &#x1f31f;安装Nginx 先登录远程服务器&#xff0c;安装依赖包 下载并解压包 &#x1f31f;安装Node.js 安装nodejs进程管理工具 &#x1f31f;安装MySQL &#x1f31f;写在最…

透过《眼睛的故事》:需求为何成为纪录片的“价值锚点”?

我们正处在一个内容过载、追求流量的时代。 对于观众来说&#xff0c;这是幸运的&#xff0c;也是不幸的。一方面&#xff0c;相比以前能接受到的内容指数级增长&#xff0c;自己的视野无限扩大&#xff0c;但另一方面&#xff0c;“流量思维”下粗制滥制的内容不在少数&#…

一百七十八、ClickHouse——海豚调度执行ClickHouse的.sql文件

一、目的 由于数仓的ADS层是在ClickHouse中&#xff0c;即把Hive中DWS层的结果数据同步到ClickHouse中&#xff0c;因此需要在ClickHouse中建表&#xff0c;于是需要海豚调度执行ClickHouse的.sql文件 二、实施步骤 &#xff08;一&#xff09;第一步&#xff0c;海豚建立Cl…

JavaWeb的基本概念

一、Web基本概念 Web的基本结构&#xff1a; 1.客户端的概述 1.1. 客户端的作用 与用户进行交互&#xff0c;用于接收用户的输入(操作)、展示服务器端的数据以及向服务器传递数据 1.2. 常见的客户端 PC端网页&#xff1a; 移动端&#xff1a; Iot设备&#xff1a; 2…

基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将gamma2.2和gamma1/2.2的数据分别导入到matlab进行对比&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 timescale 1ns / 1ps //…

MyBatisPlus中使用Mybatis方式操作数据库。

说明 MyBatisPlus中&#xff0c;可以使用 Mybatis 方式操作数据库。在 Mapper.xml 中&#xff0c;编写 SQL 来实现比较复杂的操作。 一般比较复杂的逻辑&#xff0c;需要多表联合查询&#xff0c;比较适合直接写SQL。 MybatisPlus比较适合单表操作。 PS&#xff1a;本示例只…

使用stelnet进行安全的远程管理

1. telnet有哪些不足&#xff1f; 2.ssh如何保证数据传输安全&#xff1f; 需求&#xff1a;远程telnet管理设备 用户定义需要在AAA模式下&#xff1a; 开启远程登录的服务&#xff1a;定义vty接口 然后从R2登录&#xff1a;是可以登录的 同理R3登录&#xff1a; 在R1也可以查…

10.前端打包与nginx部署

文章目录 打包部署nginx替换html 打包 首先&#xff0c;确保你的项目是可以运行的&#xff0c;以若依为例&#xff0c;运行npm run dev 是可以正常运行起来前端的。然后前端的打包命令是 # 构建测试环境 npm run build:stage # 构建生产环境 npm run build:prod打包好之后&am…

华为云香港S3云服务器性能测评_99元一年租用价格

华为云香港S3云服务器1核2G1M带宽99元一年性能测评&#xff0c;配置为S3云服务器1核2G1M带宽&#xff0c;S系列热卖机型&#xff0c;适用于个人建站、普通web应用等负载较低场景&#xff0c;系统盘为高IO40G系统盘&#xff0c;华为云百科分享华为云香港云服务器配置费用&#x…