0
点赞
收藏
分享

微信扫一扫

K8S之ConfigMap


文章目录

  • ​​一、概念​​
  • ​​二、实例​​
  • ​​`2.1.创建一个configmap`​​
  • ​​方式一:​​
  • ​​方式二:指定文件生成并创建configmap​​
  • ​​`2.2.Pod使用configmap`​​
  • ​​三、subPath​​


一、概念

创建ConfigMap后,数据实际会存储在K8s(Etcd)中,然后通过创建Pod时引用该数据。

Pod使用ConfigMap挂载的两种方式

  • 变量注入
  • 数据卷挂载

二、实例

​2.1.创建一个configmap​

方式一:

apiVersion: v1
kind: ConfigMap
metadata:
name: redis-cfg
data:
#以键值对的形式定义
abc: "123"
bcd: "456"

#以文本的形式定义,适用于多行文件;|表示支持多行
redis.properties: |
port: 6379
host: 192.168.1.10

方式二:指定文件生成并创建configmap

kubectl create cm myconfigmap --from-file=application.yml -n mynamespace

​2.2.Pod使用configmap​

apiVersion: v1
kind: Pod
metadata:
name: configmap-demo-pod
spec:
containers:
- name: demo
image: nginx
imagePullPolicy: IfNotPresent
env:
- name: ABC
valueFrom:
configMapKeyRef:
name: redis-cfg
key: abc
- name: BCD
valueFrom:
configMapKeyRef:
name: redis-cfg
key: bcd
volumeMounts:
- name: config #卷名
mountPath: "/config" #挂载到容器的/config目录下
readOnly: true
volumes:
- name: config #卷名
configMap:
name: redis-cfg #configmap的名字
items:
- key: "redis.properties" #configmap中的文件名
path: "redis_config" #挂载到容器后的文件名

进入到容器中查看
K8S之ConfigMap_redis

三、subPath

参考文章:
​​​K8s subPath​​

volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/nginx.conf # 也可挂载到文件
subPath: nginx.conf # 挂载到文件时,需设置子路径

将名为 nginx-config的 volume 中的 nginx.conf key 对应内容,以文件形式挂载到容器中 /etc/nginx/nginx.conf 路径。

需注意:在 ConfigMap 中使用 subPath 将影响 ConfigMap 内容变化时的自动更新。


举报

相关推荐

0 条评论