当前位置: 首页 > news >正文

k8s概念-ConfigMap

回到目录

一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。

1 创建ConfigMap

#使用 kubectl create configmap -h 查看示例,构建 configmap 对象
Examples:# Create a new config map named my-config based on folder barkubectl create configmap my-config --from-file=path/to/bar# Create a new config map named my-config with specified keys instead of file basenames on diskkubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt# Create a new config map named my-config with key1=config1 and key2=config2kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2# Create a new config map named my-config from the key=value pairs in the filekubectl create configmap my-config --from-file=path/to/bar# Create a new config map named my-config from an env filekubectl create configmap my-config --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env

1.1 将指定目录下所有文件加载到配置文件中

# Create a new config map named my-config based on folder bar
# kubectl create configmap my-config --from-file=path/to/bar
#example:
#在test目录下有两个配置文件db.properties redis.properties#1.创建configmap,名字为test-cm,从test目录下加载
[root@k8s-master1 configmap]# kubectl create cm test-cm --from-file=test/
configmap/test-cm created#2.查看configmap
[root@k8s-master1 configmap]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      5d9h #k8s默认的认证
test-cm            2      7s	 #我们创建的#3.查看test-cm的详细信息
[root@k8s-master1 configmap]# kubectl describe cm test-cm
#内容如下:
Name:         test-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
db.properties:   #key
----
username: root
password: 1234redis.properties:
----
port: 6379BinaryData
====Events:  <none>

1.2 指定一个或多个文件和key

# Create a new config map named my-config with specified keys instead of file basenames on disk
#  kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt#指定一个或多个文件,不加key时以文件名作为key#example:#创建configmap,名称为testfile-cm,从指定的test目录下的db.properties加载
[root@k8s-master1 configmap]# kubectl create cm testfile-cm --from-file=test/db.properties
configmap/testfile-cm created#查看configmap
[root@k8s-master1 configmap]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      5d10h
testfile-cm        1      5s#查看详情
[root@k8s-master1 configmap]# kubectl describe cm testfile-cm
Name:         testfile-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
db.properties: #不指定key,以文件名为key,如果指定则以具体指定作为key
----
username: root
password: 1234BinaryData
====Events:  <none>

1.3 命令上手动添加key-value

# Create a new config map named my-config with key1=config1 and key2=config2
#kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2#直接写入key和value#example:#创建configmap,名称为test-cm,手动添加key:user,value:root;key:password,value:1234
[root@k8s-master1 configmap]# kubectl create cm test-cm --from-literal=user=root --from-literal=password=1234
configmap/test-cm created
[root@k8s-master1 configmap]# kubectl get cm
NAME               DATA   AGE
kube-root-ca.crt   1      5d10h
test-cm            2      7s
[root@k8s-master1 configmap]# kubectl describe cm test-cm
Name:         test-cm
Namespace:    default
Labels:       <none>
Annotations:  <none>Data
====
password: #key
----
1234   #value
user: #key
----
root  #valueBinaryData
====Events:  <none>

2 configmap的使用

在pod中

  • 将configmap中的数据设置为容器的环境变量

  • 将ConfigMap中的数据设置为命令行参数

  • 使用Volume将ConfigMap作为文件或目录挂载

  • 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap

将configmap挂载到容器中,configmap变化,容器自动更新

而 写入环境变量不会自动更新

2.1 配置到容器的环境变量中

# test-pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod-configmap
spec:containers:- name: test-busyboximage: busyboximagePullPolicy: IfNotPresentargs:- sleep- "86400"env:                  # env,配置容器环境变量- name: KEY1		  # 容器环境变量key为key1valueFrom:		  # value内容configMapKeyRef:	  # 通过configmap的key映射name: my-config	  # configmap的名称key: key1		  # configmap中的key- name: KEY2valueFrom:configMapKeyRef:name: my-configkey: key2

2.2 设置为命令行参数

# test-pod-configmap-cmd
apiVersion: v1
kind: Pod
metadata:name: test-pod-configmap-cmd
spec:containers:- name: test-busyboximage: busyboximagePullPolicy: IfNotPresentcommand: [ "/bin/sh","-c","echo $(KEY1) $(KEY2)"]env:- name: KEY1valueFrom:configMapKeyRef:name: my-configkey: key1- name: KEY2valueFrom:configMapKeyRef:name: my-configkey: key2restartPolicy: Never

2.3 将configmap挂载到容器中

# test-pod-projected-configmap-volume.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod-projected-configmap-volume
spec:containers:- name: test-pod-busyboximage: busyboximagePullPolicy: IfNotPresentargs:- sleep- "86400"volumeMounts:                        # 挂载- name: config-volume				# 挂载的数据卷名mountPath: "/projected-volume"		# 挂载到哪的路径readOnly: true						# 只读权限volumes:								# 数据卷- name: config-volume					# 数据卷名称projected:sources:- configMap:						# 数据卷为configmapname: my-config					# 数据卷名
http://www.lryc.cn/news/109284.html

相关文章:

  • Mybatis 实体类属性名和表中字段名不一致怎么处理
  • CAS - 从AtomicInteger窥探CAS
  • micro-ros IMU ML 代码
  • 二十三种设计模式第二十四篇--访问者模式(完结撒花)
  • 月报总结|Moonbeam 7月份大事一览
  • 【2023.8】docker一键部署wvp-GB28181-pro和ZLMediaKit过程全记录
  • 【2023】字节跳动 10 日心动计划——第四关
  • 数据库与数据仓库的区别及关系
  • Emacs之设置行号前景颜色(字体颜色)/背景颜色/光标颜色/背景透明度(一百二十七)
  • 【hive经典指标,离线数仓指标,ADS层指标分析】最近7日内连续3日下单用户数
  • 线上java程序CPU及内存占用过高问题排查总结
  • c高级:day3
  • Java检查值是否存在于数组中的3种方法
  • python 连接oracle pandas以简化excel的编写和数据操作
  • Kubernetes高可用集群二进制部署(三)部署api-server
  • 【网络|TCP】三次握手、四次握手
  • 刷题笔记 day7
  • Tuxera NTFS2023Mac强大的Mac读写工具
  • ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习
  • 数据库的分库分表
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(2)]
  • LC-980. 不同路径 III(回溯)
  • 软件测试缺陷报告
  • vue js-table2excel 导出excel 可带多张图片
  • HTML 基础标签
  • Nginx使用proxy_cache指令设置反向代理缓存静态资源
  • React安装ant design组件库,并使用
  • Leetcode | 有效的括号、最长有效括号
  • 思科模拟器配置静态路由(下一跳使用IP)
  • MyBatis -- 执行流程