kubernetes使用 (十五) ConfigMap 配置文件挂载

本文介绍如何在Kubernetes中使用ConfigMap来管理应用程序配置,包括以volume形式挂载配置文件及以环境变量形式挂载配置信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

configmap和secret类似,不过configmap存放的非加密的信息,常用于存放服务的配置文件

一. 以volume形式挂载configmap文件

1. 创建配置文件

#创建一个配置文件 (假设是redis)
cat > redis.properties <<EOF
redis.host=127.0.0.1
redis.port=6379
redis.password=123456
EOF

2. 创建confimap

#获取yaml
kubectl create configmap redis-config --from-file=redis.properties -o yaml --dry-run > redis-config-configmap.yaml


#查看
apiVersion: v1
data:
  redis.properties: |
    redis.host=127.0.0.1
    redis.port=6379
    redis.password=123456
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: redis-config

3. 部署

kubectl create -f redis-config-configmap.yaml

4. 查看详细信息

[root@k8s-master01 ~]# kubectl describe configmap redis-config
Name:         redis-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
redis.properties:     #配置文件名称
----                      #下面是包含的数据
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

Events:  <none>

5. 创建pod并添加挂载

cat > cm.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: busybox
      image: busybox
      command: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]
           #执行命令,将挂载的文件信息输出

      volumeMounts:        #挂载到容器
      - name: config-volume
        mountPath: /etc/config    #挂载的目录
  volumes:
    - name: config-volume
      configMap:              #指定为configmap文件
        name: redis-config      #刚才创建的redis-config的cm文件
  restartPolicy: Never
EOF

#部署
kubectl create -f cm.yaml

查看容器信息

#查看
[root@k8s-master01 ~]# kubectl get pod
NAME    READY   STATUS      RESTARTS   AGE
mypod   0/1     Completed   0          20s

#因为执行的任务结束了,所以就退出了,Completed表示完成并退出



#查看日志
[root@k8s-master01 ~]# kubectl logs mypod
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

 

二. 以变量形式挂载configmap文件

1.创建配置文件

cat > myconfig-var.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfig-var
data:
  special.level: info
  special.type: hello
EOF

#部署
kubectl create -f myconfig-var.yaml

2. 创建pod文件并关联

cat > mypod-var.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: mypod-var
spec:
  containers:
    - name: busybox
      image: busybox:latest
      command: [ "/bin/sh", "-c", "echo \$(LEVEL) \$(TYPE)" ]
      env:
        - name: LEVEL
          valueFrom:
            configMapKeyRef:
              name: myconfig-var
              key: special.level
        - name: TYPE
          valueFrom:
            configMapKeyRef:
              name: myconfig-var
              key: special.type
  restartPolicy: Never
EOF

#部署
kubectl create -f mypod-var.yaml

3. 查看容器信息

[root@k8s-master01 ~]# kubectl get pod
NAME        READY   STATUS      RESTARTS   AGE
mypod       0/1     Completed   0          8m57s
mypod-var   0/1     Completed   0          5s

[root@k8s-master01 ~]# kubectl logs  mypod-var 
info hello

#因为已经将配置挂载到容器变量中,所以可以输出对应变量的一个值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值