五种创建k8s的configMap的方式及configmap使用

configmap介绍

Kubernetes 提供了 ConfigMap 来管理应用配置数据,将配置信息从容器镜像中解耦,使应用更灵活、可移植。

1、基于一个目录来创建ConfigMap

​ 你可以使用 kubectl create configmap 基于同一目录中的多个文件创建 ConfigMap。 当你基于目录来创建 ConfigMap 时,kubectl 识别目录下文件名可以作为合法键名的文件, 并将这些文件打包到新的 ConfigMap 中。普通文件之外的所有目录项都会被忽略 (例如:子目录、符号链接、设备、管道等等)

  • 创建本地目录:
mkdir -p configure-pod-container/configmap/
# 将示例文件下载到 `configure-pod-container/configmap/` 目录
wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-container/configmap/game.properties
wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties# 创建 ConfigMap
kubectl create configmap game-config --from-file=configure-pod-container/configmap/

以上命令将 configure-pod-container/configmap 目录下的所有文件,也就是 game.propertiesui.properties 打包到 game-config ConfigMap 中。

  • 查看创建好的configmap

通过kubectl get configmap game-config -o yaml

在这里插入图片描述

上图红框中数据为对应configmap数据,发现有两个key-value对,可以key为文件名,value为对应的文件值。

  • 将 ConfigMap 数据添加到一个卷中

    现在来完成一项任务,将名为 game-config的configmap通过卷的方式注入到容器中

    # busy-config-volumn.yaml
    apiVersion: v1
    kind: Pod
    metadata:name: from-dir-pod
    spec:containers:- name: test-containerimage: registry.k8s.io/busyboxcommand:- /bin/sh- -c- |while true; doenv;sleep 5;donevolumeMounts:- name: game-configmountPath: /etc/config/volumes:- name: game-configconfigMap:# 提供包含要添加到容器中的文件的 ConfigMap 的名称name: game-configrestartPolicy: Never

    使用命令创建pod

    [root@k8s-master01 projects]# kubectl apply -f busy-config-volumn.yaml
    pod/from-dir-pod created
    [root@k8s-master01 projects]# kubectl get pod
    NAME                                  READY   STATUS    RESTARTS   AGE
    from-dir-pod                         1/1     Running   0          9s
    

    查看映射文件:

    [root@k8s-master01 projects]# kubectl exec -it from-file-pod -- ls /etc/config
    game.properties  ui.properties
    
2、基于文件来创建ConfigMap
kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties

创建利用game-config-2的文件

[root@k8s-master01 projects]# cat from-file-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: from-file-pod
spec:containers:- name: test-containerimage: registry.k8s.io/busyboxcommand:- /bin/sh- -c- |while true; doenv;sleep 5;donevolumeMounts:- name: game-configmountPath: /etc/config/volumes:- name: game-configconfigMap:# 提供包含要添加到容器中的文件的 ConfigMap 的名称name: game-config-2# 创建from-file-pod
[root@k8s-master01 projects]# kubectl apply -f from-file-pod.yaml
pod/from-file-pod created
[root@k8s-master01 projects]# kubectl get pod
NAME                                  READY   STATUS    RESTARTS   AGE
from-file-pod                         1/1     Running   0          14s

查看挂载的卷

[root@k8s-master01 projects]# kubectl exec -it from-file-pod -- ls /etc/config
game.properties

可以多次使用 --from-file 参数,从多个数据源创建 ConfigMap,如:

kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties --from-file=configure-pod-container/configmap/ui.properties
[root@k8s-master01 projects]# kubectl exec -it from-file-pod -- cat /etc/config/ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
3、使用–from-env-file基于env文件来创建configMap
[root@k8s-master01 projects]# kubectl create configmap game-config-env --from-env-file=configure-pod-container/configmap/game.properties  --from-env-file=configure-pod-container/configmap/ui.properties
configmap/game-config-env created
[root@k8s-master01 projects]# kubectl get configmap game-config-env -o yaml
apiVersion: v1
data:allow.textmode: "true"color.bad: yellowcolor.good: purpleenemies: aliensenemies.cheat: "true"enemies.cheat.level: noGoodRottenhow.nice.to.look: fairlyNicelives: "3"secret.code.allowed: "true"secret.code.lives: "30"secret.code.passphrase: UUDDLRLRBABAS
kind: ConfigMap
metadata:creationTimestamp: "2024-11-22T08:57:14Z"name: game-config-envnamespace: defaultresourceVersion: "1641033"uid: 63e073ac-72b3-46b8-b8ef-39dcc51a6449

可以看到通过–from-env-file参数会把文件以key-value形式进行保存,而不是整体保存。

将configMap数据作为env变量注入到pod中

[root@k8s-master01 projects]# cat from-env-file-pod.yaml
apiVersion: v1
kind: Pod
metadata:name: from-env-file-pod
spec:containers:- name: test-containerimage: registry.k8s.io/busyboxcommand:- /bin/sh- -c- |while true; doenv;sleep 5;doneenv:# 定义环境变量- name: ALLOW_TEXTMODE_KEYvalueFrom:configMapKeyRef:# ConfigMap 包含你要赋给 ALLOW.TEXTMODE_KEY 的值name: game-config-env# 指定与取值相关的键名key: allow.textmode[root@k8s-master01 projects]# kubectl exec -it from-env-file-pod  -- env
ALLOW_TEXTMODE_KEY=true
... //省略其他环境变量
4、根据字面值创建 ConfigMap
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm[root@k8s-master01 projects]# kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
configmap/special-config created
[root@k8s-master01 projects]# kubectl get  configmap special-config -o yaml
apiVersion: v1
data:special.how: veryspecial.type: charm
kind: ConfigMap
metadata:creationTimestamp: "2024-11-22T09:06:27Z"name: special-confignamespace: defaultresourceVersion: "1642217"uid: ba08805a-489c-40b1-9b7c-79bf39412212

--from-env-file--from-file的区别

特性--from-env-file--from-file
文件格式要求必须是 KEY=VALUE 格式的键值对任意文本文件(可包含复杂内容)
数据结构每个键值对对应 ConfigMap 的一个条目文件名是键,文件内容是值
支持目录不支持支持,将目录中所有文件作为键值对存储
适用场景环境变量配置文件配置文件(如 .properties, .yaml 等)
示例 ConfigMap 数据结构{ "KEY1": "VALUE1", "KEY2": "VALUE2" }{ "filename1": "file content", ... }
5、基于yaml文件创建
apiVersion: v1
data:special.how: veryspecial.type: charm
kind: ConfigMap
metadata:name: special-config

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

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

相关文章

如何将本地项目上传到gitee上

本地项目代码想上传到gitee管理、使用idea编辑器操作上传 新建仓库、填写信息 创建好了仓库,把HTTPS路径复制一下,之后会用到。 用命令进入项目进行git初始化 执行命令: cd 文件夹 git init 用idea把项目打开,然后配置一下gi…

大型语言模型LLM - Finetuning vs Prompting

资料来自台湾大学李宏毅教授机器学课程ML 2023 Spring,如有侵权请通知下架 台大机器学课程ML 2023 Springhttps://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php2023/3/10 课程 機器如何生成文句 内容概要 主要探讨了大型语言模型的两种不同期待及其导致的两类…

Scikit-learn Pipeline完全指南:高效构建机器学习工作流

在机器学习工作流程中,组合估计器通过将多个转换器(Transformer)和预测器(Predictor)整合到一个管道(Pipeline)中,可以有效简化整个过程。这种方法不仅简化了数据预处理环节,还能确保处理过程的一致性,最大限度地降低数据泄露的风险。构建组合估计器最常用的工具是Scikit-learn…

kali Linux中foremost安装

记录一下 foremost工具介绍 foremost是基于文件开始格式,文件结束标志和内部数据结构进行恢复文件的程序。该工具通过分析不同类型文件的头、尾和内部数据结构,同镜像文件的数据进行比对,以还原文件。它默认支持19种类型文件的恢复。用户还可…

ChatGPT如何辅助academic writing?

今天想和大家分享一篇来自《Nature》杂志的文章《Three ways ChatGPT helps me in my academic writing》,如果您的日常涉及到学术论文的写作(writing)、编辑(editing)或者审稿( peer review)&a…

2024年11月26日Github流行趋势

项目名称:v2rayN 项目维护者:2dust yfdyh000 CGQAQ ShiinaRinne Lemonawa 项目介绍:一个支持Xray核心及其他功能的Windows和Linux图形用户界面客户端。 项目star数:70,383 项目fork数:11,602 项目名称:fre…

大数据面试SQL题-笔记02【查询、连接、聚合函数】

大数据面试SQL题复习思路一网打尽!(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【查询、连接、聚合函数】​​​​​​​ 目录 01、查询 01…

Unity类银河战士恶魔城学习总结(P145 Save Skill Tree 保存技能树)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了技能树的保存 警告!!! 如果有LoadData()和SaveData()…

redmi 12c 刷机

刷机历程 一个多月前网购了redmi 12c这款手机, 价格只有550,用来搞机再适合不过了, 拆快递后就开始倒腾,网上有人说需要等7天才能解锁,我绑定了账号过了几天又忍不住倒腾,最后发现这块手机不用等7天解锁成功了,开始我为了获取root权限, 刷入了很火的magisk,但是某一天仍然发现/…

YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】

目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述&#xff0…

【通俗理解】步长和学习率在神经网络中是一回事吗?

【通俗理解】步长和学习率在神经网络中是一回事吗? 【核心结论】 步长(Step Size)和学习率(Learning Rate, LR)在神经网络中并不是同一个概念,但它们都关乎模型训练过程中的参数更新。 【通俗解释&#x…

STL之算法概览

目录 算法概览 算法分析与复杂度标识O() STL算法总览 质变算法mutating algorithms----会改变操作对象之值 非质变算法nonmutating algorithms----不改变操作对象之值 STL算法的一般形式 算法的泛化过程 算法概览 算法,问题之解法也。 以有限的步骤&#xff0…

华为IPD流程管理体系L1至L5最佳实践-解读

该文档主要介绍了华为IPD流程管理体系,包括流程体系架构、流程框架实施方法、各业务流程框架示例以及相关案例等内容,旨在帮助企业建立高效、规范的流程管理体系,实现业务的持续优化和发展。具体内容如下: 1. 华为流程体系概述 -…

【青牛科技】 D2822M 双通道音频功率放大电路芯片介绍,用于便携式录音机和收音机作音频功率放大器

概述: D2822M 用于便携式录音机和收音机作音频功率放大器。D2822M 采用 DIP8 和 SOP8 封装形式。 特点:  电源电压降到 1.8V 时仍能正常工作  交越失真小  静态电流小  可作桥式或立体声式功放应用  外围元件少  通道分离度高  开机和关机…

【Python中while循环】

一、深拷贝、浅拷贝 1、需求 1)拷贝原列表产生一个新列表 2)想让两个列表完全独立开(针对改操作,读的操作不改变) 要满足上述的条件,只能使用深拷贝 2、如何拷贝列表 1)直接赋值 # 定义一个…

抖音短视频矩阵源代码部署搭建流程

抖音短视频矩阵源代码部署搭建流程 1. 硬件准备 需确保具备一台性能足够的服务器或云主机。这些硬件设施应当拥有充足的计算和存储能力,以便支持抖音短视频矩阵系统的稳定运行。 2. 操作系统安装 在选定的服务器或云主机上安装适合的操作系统是关键步骤之一。推…

kmeans 最佳聚类个数 | 轮廓系数(越大越好)

轮廓系数越大,表示簇内实例之间紧凑,簇间距离大,这正是聚类的标准概念。 簇内的样本应该尽可能相似。不同簇之间应该尽可能不相似。 目的:鸢尾花数据进行kmeans聚类,最佳聚类个数是多少? plot(iris[,1:4…

day04 企业级Linux安装及远程连接知识实践

1. 使用传统的网卡命名方式 在启动虚拟机时,按tab键进入编辑模式 添加命令: net.ifnames0 biosdevname0 这样linux系统会使用传统的网卡命名,例如eth0、eth1…… 2. 快照 做系统关键操作时,一定要使用快照(先将系统关机) 3.…

STM32C011开发(2)----nBOOT_SEL设置

STM32C011开发----2.nBOOT_SEL设置 概述硬件准备视频教学样品申请源码下载参考程序自举模式BOOT0设置配置 nBOOT_SEL生成STM32CUBEMX串口配置LED配置堆栈设置串口重定向主循环演示 概述 STM32CubeProgrammer (STM32CubeProg) 是一款用于编程STM32产品的全功能多操作系统软件工…

onvif协议相关:3.1.5 Digest方式获取预置位

背景 关于onvif的其实很早之前我已经在专栏中写了不少了, 使用onvif协议操作设备 但最近有陆陆续续的粉丝问我, 希望我在写一些关于 onvif的设备自动发现、预置位跳转、云台操作的博客。 满足粉丝的需求,安排。 今天我们来实现 获取预置位 准备工作 我们这里的话选择Diges…