5中创建k8s的configMap的方式及configmap使用

devtools/2024/11/23 16:32:55/
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.ppmy.cn/devtools/136333.html

相关文章

SEO网站都用哪里的服务器

在当今这个信息爆炸的时代,网站的加载速度已经成为衡量其质量的重要指标之一。对于SEO网站来说,速度不仅关乎用户体验,更是影响搜索引擎排名的重要因素。在众多服务器提供商中,鼎峰新匯凭借其卓越的性能和优质的服务,成…

第8章利用CSS制作导航菜单

8.1 水平顶部导航栏 8.1.1 简单水平导航栏的设计与实现 1导航栏的创建 <nav> 在<nav>的首尾标签之间&#xff0c;使用<div>标签创建菜单范围&#xff0c;结合无序列表<ul>和有 列表<al>标签&#xff0c;配合列表选项<li>创建菜单选项。其…

Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

C++对象的四大基本特性

在面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;中&#xff0c;对象的四大基本特性是对象唯一性&#xff08;Identity&#xff09;、分类性&#xff08;Classification&#xff09;、继承性&#xff08;Inheritance&#xff09;和多态性&#xff08;P…

【AIGC】大模型面试高频考点-显存占用

【AIGC】大模型面试高频考点-显存占用 &#xff08;1&#xff09;显存占用-训练阶段&#xff08;2&#xff09;显存占用-推理阶段 &#xff08;1&#xff09;显存占用-训练阶段 &#xff08;2&#xff09;显存占用-推理阶段

Linux 查看端口和进程的常用命令(下)

htop 命令 htop 是 top 命令的增强版本&#xff0c;提供了更友好的交互界面&#xff0c;并且支持使用键盘快捷键操作。默认情况下&#xff0c;htop 没有安装&#xff0c;你可以通过以下命令安装它&#xff1a; bash sudo apt install htop # 在Debian/Ubuntu系统上 sudo yum …

对抗样本存在的原因

对抗样本存在的原因与深度学习模型的结构和训练机制密切相关&#xff0c;主要包括以下几个方面&#xff1a; 1. 模型的高维性和线性化行为 高维性&#xff1a;深度学习模型通常在高维空间中运行&#xff0c;而高维空间中的数据分布非常稀疏。微小的扰动在高维空间可能被放大&a…

MySQL性能分析工具的使用

目录 1.查看系统性能参数 2.统计SQL的查询成本&#xff1a;last_query_cost 3.定位执行慢的 SQL&#xff1a;慢查询日志 3.1开启慢查询日志参数 1.开启slow_query_log 2. 修改long_query_time阈值 3.2 查看慢查询数目 4.查看 SQL 执行成本&#xff1a;SHOW PROFILE 5.…