【kubernetes】配置管理中心Configmap运用

news2024/9/20 0:02:30

一,介绍

Configmap(简写 cm)是k8s中的资源对象,用于保存非机密性的配置的,数据可以用key/value键值对的形式保存,也可通过文件的形式保存。

【局限性】:在ConfigMap不是用来保存大量数据的,其数据量不可超过1 MiB。

kubectl get cm

二,功能

Configmap资源对象,可以有一个或者多个Configmap,通过 volume 形式映射到容器内部指定目录上,容器中应用程序按照原有方式读取容器特定目录上的配置文件,最总实现统一的配置管理。

三,两种方式

configmap注入方式有两:

  • 一种是将configMap做为存储卷
  • 一种是将configMap通过env中configMapKeyRef,注入到容器中。

四,应用场景

  • 1、当需要将应用配置写进代码中,更新配置也需要打包镜像时。
    configmap可以将配置信息和docker镜像解耦,以便实现镜像的可移植性和可复用性,因为一个configMap其实就是一系列配置信息的集合,可直接注入到Pod中给容器使用。
  • 2、当搭建使用微服务架构,在多个服务共用配置时。
    如果每个服务中单独一份配置的话,那么更新配置就很麻烦,使用configmap可以友好的进行配置共享。

五,创建方法

1,指定"key/value"创建

直接在命令行中,通过--from-literal指定参数,创建configmap。更为常用!

# 指定key1=config1和key2=config2来创建
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2

在这里插入图片描述

2,指定“配置文件”创建

key1和key2 分别指定一个配置文件,可以连续多个–from-file使用。

kubectl create configmap my-config --from-file=key1=/path/config-dir/file1.txt --from-file=key2=/path/config-dir/file2.txt

在这里插入图片描述

3,指定“目录”创建

目录path/config-dir/下,存放所有配置文件

kubectl create configmap my-config --from-file=path/config-dir/

4,编写“configmap清单”创建

# cat mysql-configmap.yaml 

apiVersion: v1
kind: ConfigMap     # 指定cm类型
metadata:
  name: mysql       # 指定名称
  labels:
    app: mysql      # 指定cm的标签
data:               # 指定cm数据
  master.cnf: |     # 具体数据名称1
    [mysqld]
    log-bin
    log_bin_trust_function_creators=1
    lower_case_table_names=1
  slave.cnf: |      # 具体数据名称2
    [mysqld]
    super-read-only
    log_bin_trust_function_creators=1

【注意】

  • 符合| 表示,以下内容按“行” 显示。

六,使用

下面以configmap名为mdy-cm为例。做如下进入pod操作:
在这里插入图片描述

1,通过环境变量引入,使用valueFrom.configMapKeyRef

# cat mdy-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mdy-pod-configmap
spec:
  containers:
  - name: mdy-pod-tep-configmap
    image: busybox
    command: ["/bin/sh","-c","sleep 3600"]
    imagePullPolicy: IfNotPresent
    env:                       # 引用变量
    - name: mysql-user         # 该名称 定义的是容器内的变量
      valueFrom:               # 数据来源
        configMapKeyRef:       # 通过valueFrom.configMapKeyRef加载 configmap
          name: mdy-cm         # 指定之前定义的 configmap资源名称
          key: mysql.com       # 指定之前定义的 configmap资源中的key, 将value赋值给上面容器内定义的变量
    - name: mysql-pwd          # 同上
      valueFrom:
        configMapKeyRef:
          name: mdy-cm
          key: nginx.conf
  restartPolicy: Never

在这里插入图片描述

2,通过环境变量引入:使用envfrom

# cat mdy-pod-envFrom.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: mdy-pod-configmap-envfrom
spec:
  containers:
  - name: mdy-pod-tep-configmap-envfrom
    image: busybox
    command: ["/bin/sh","-c","sleep 3600"]
    imagePullPolicy: IfNotPresent
    envFrom:                      # 引入变量
    - configMapRef:               # 定义数据来源configmap
        name: mdy-cm              # 明确configmap的资源名称
  restartPolicy: Never

在这里插入图片描述

3,把configmap做成volume,挂载到pod 【常用方式】

该种方式类似与持久化存储。以文件形式挂载到容器内部。

# cat mdy-pod-volume.yaml 

apiVersion: v1
kind: Pod
metadata:
  name: mdy-pod-configmap-volume
spec:
  containers:
  - name: mdy-pod-tep-configmap-volume
    image: busybox
    command: ["/bin/sh","-c","sleep 3600"]
    imagePullPolicy: IfNotPresent
    volumeMounts:                         # 容器内部挂载引入         
    - name: configmap-volume              # 指定挂载卷的名字
      mountPath: /tmp/config              # 容器内挂载指定路径目录
  volumes:                                # 挂载卷
  - name: configmap-volume                # 挂载卷名称,必须在上面指定
    configMap:                            # 采用configmap形式挂载
      name: mdy-cm                        # 之前生成configmap的名称
  restartPolicy: Never

在这里插入图片描述

以上三种方式不同:

  • 第一种:通过给容器定义变量名A,然后将configmap中 B=C的值C,赋值给A。即 A = C
  • 第二种:不在定义变量A,直接将configmap中 B=C,作为变量 加载到容器内。即 B = C
  • 第三章:以挂载卷的形式,加载到容器内部。此种方式更为常用

七,Configmap热更新

更新 ConfigMap 的值以后:
1,使用该 ConfigMap 挂载的 "Env"是不会同步更新的。(见下图)
在这里插入图片描述

2,使用该 ConfigMap 挂载的" Volume" 中的数据需要一段时间(大概10s 左右)才能同步更新(见下图)。
在这里插入图片描述

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

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

相关文章

Windows下Python和PyCharm的应用(二)__快捷键方式的设定

前言 程序写久了,难免会形成自己的编程习惯。比如对某一套快捷键的使用,已经形成了肌肉记忆。 为了方便快捷键的使用,可以在PyCharm中设置自己喜欢的快捷键。 我比较习惯于微软Visual Studio的快捷键设置。(因为早些年VC开发用的…

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加…

win11如何录屏

在 Win11 中录屏可以使用系统自带的工具和一些第三方应用。以下是几种方法: 方法一:使用 Xbox Game Bar 1. 打开 Xbox Game Bar - 按 Win G 组合键打开 Xbox Game Bar。 2. 开始录制 - 在显示的界面中,点击“录制”按钮(…

Linux之nginx部署项目【前后端分离】(外加redis安装)

nginx安装和访问 1.使用apt安装Nginx apt install -y nginx 用whereis nginx找到和nginx相关目录 nginx目录结构 /usr/sbin/nginx 服务文件 /etc/nginx 配置目录 /usr/share/nginx/html 发部项目 服务名: nginx.service ps -ef | grep nginx apt install -y net-tools …

【Excel 表打印基本操作】

表格打印 1.设置缩放打印1.1 命令启动器、命令组1.2 一页纸打印1.3 自由设置打印缩放比例 2.跨页打印标题3.打印选定区域3.1 打印前/后n行3.2 打印多个表格区域3.3 只打印图表3.4 不打印照片 4.设置分页打印4.1 手动分页:分页预览,分页符a) 手动插入分页…

x86的Docker环境下载ARM版容器镜像

文章目录 应用场景下载方法 应用场景 内网是信创ARM环境,需要从外网下载镜像,但外网的docker环境是X86环境,此时需要在外网docker环境下载ARM版容器镜像。 下载方法 # 如何找sha256参见下面的截图。 # hub.docker网站找到镜像后&#xff0…

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴&#xff1a; <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency>

0基础学习爬虫系列:程序打包部署

1.目标 将已经写好的python代码&#xff0c;打包独立部署或运营。 2. 环境准备 1&#xff09;通义千问 &#xff1a;https://tongyi.aliyun.com/qianwen 2&#xff09;0基础学习爬虫系列–网页内容爬取&#xff1a;https://blog.csdn.net/qq_36918149/article/details/14199…

【Python篇】PyQt5 超详细教程——由入门到精通(终篇)

文章目录 PyQt5超详细教程前言第9部分&#xff1a;菜单栏、工具栏与状态栏9.1 什么是菜单栏、工具栏和状态栏9.2 创建一个简单的菜单栏示例 1&#xff1a;创建带有菜单栏的应用程序代码详解&#xff1a; 9.3 创建工具栏示例 2&#xff1a;创建带有工具栏的应用程序代码详解&…

如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐

《使命召唤4&#xff1a;现代战争》&#xff08;Call of Duty 4: Modern Warfare&#xff09;是由Infinity Ward开发并于2007年发行的第一人称射击游戏。该游戏是《使命召唤》系列的第四部作品&#xff0c;是一款非常受欢迎的游戏之一&#xff0c;《使命召唤4&#xff1a;现代战…

QT串口读取Serial->readAll()踩过的坑

QT串口读取Serial->readAll接收不完全踩过的坑 Chapter1 QT串口读取Serial->readAll()踩过的坑坑一&#xff1a;坑二 Chapter2 [QT串口上位机BUG解决]json解析数据bug以及接收数据问题问题描述原因分析&#xff1a;解决方案&#xff1a;一、是数据采集端&#xff08;单片…

灰光模块,彩光模块-介绍

1. 引用 知识分享系列一&#xff1a;5G基础知识-CSDN博客 5G前传的最新进展-CSDN博客 灰光和彩光_通信行业5G招标系列点评之二&#xff1a;一文读懂5G前传-光纤、灰光、彩光、CWDM、LWDM、MWDM...-CSDN博客 ADOP带你了解&#xff1a;CWDM、DWDM、MWDM、LWDM&#xff1a;快速…

久久公益节||“携手万顺叫车一起做公益”

99公益日是由腾讯公益联合多家公益组织、企业及社会各界爱心人士共同举办的年度大型公益活动。随着99公益日的到来&#xff0c;同悦社工诚挚地邀请了万顺叫车一起参与今年的公益活动&#xff0c;共同为社会公益事业贡献力量。 在本次公益倡导活动中&#xff0c;万顺叫车将发挥其…

vLLM (5) - LLMEngine下篇

系列文章目录 vLLM (1) - Qwen2推理&部署 vLLM (2) - 架构总览 vLLM (3) - Sequence & SequenceGroup vLLM (4) - LLMEngine上篇 vLLM (5) - LLMEngine下篇 文章目录 系列文章目录前言一、类图二、LLM._validate_and_add_requests()1.LLM2.LLMEngine3.Scheduler 三、L…

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论&#xff0c;强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作&#xff0c;敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析&#xff0c;探讨系统变化对敏捷开发的影响、业务与技术的对齐以…

axure之变量

一、设置我们的第一个变量 1、点击axure上方设置一个全局变量a 3 2、加入按钮、文本框元件点击按钮文档框展示变量值。 交互选择【单击时】【设置文本】再点击函数。 点击插入变量和函数直接选择刚刚定义的全局变量&#xff0c;也可以直接手动写入函数(注意写入格式。) 这…

sheng的学习笔记-AI-概率图,隐马尔可夫HMM,马尔可夫随机场MRF,条件随机场CRF

ai目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 贝叶斯分类&#xff1a; https://blog.csdn.net/coldstarry/article/details/138861587 基础知识 概率图模型 概率图模型(probabilistic graphical model)是一类用图来表达变量相关关系的概率模型。 它以图为表示工具&…

mac|安装nginx

使用homebrew安装nginx brew install nginx 注意&#xff1a; 一般来说nginx会被默认安装在/usr/local/cellar,打开【访达】&#xff0c;前往【电脑】 由于/usr是隐藏文件&#xff0c;无法直接查看。通过 shiftommand. 即可查看 可以看到我的不在这里&#xff08;我也不知道…

【ruoyi框架】开箱即用的管理系统框架

目录 1.简介 2.快速开始 2.1.仓库 2.2.环境初始化 3.使用介绍 3.1.权限与组件 3.2.开发与测试 1.简介 管理系统是当前软件市场上最常见的软件&#xff0c;管理系统在功能和界面上都有大量通用的点。 功能上通用的点包括但不限于&#xff1a; 角色、权限管理菜单管理鉴…

智能制造中,叉车防撞报警系统的数字化管理

由于叉车的价格便宜&#xff0c;装载能力强等特点&#xff0c;在工厂得到了广泛地使用&#xff0c;极大提升了仓库物料的流转效率。但叉车在使用当中&#xff0c;也存在一些风险&#xff0c;甚至带来一些事故。另外一个方面&#xff0c;如何对仓库进行有效地数字化管理&#xf…