K8S中ConfigMap的简单应用

ConfigMap主要用于存储一些我们实际应用中的一些配置,将配置信息保存到etcd中,然后以变量或者volume挂载到容器中来使用这些配置信息。

  • 以volume挂载形式应用配置信息(以redis的配置为例)
  1. 创建配置文件
[root@k8smaster ~]# cat redis.properties
redis.host=127.0.0.1
redis.port=6379
redis.password=123456

2.创建ConfigMap

[root@k8smaster ~]# kubectl create configmap redis-config --from-file=redis.properties
configmap/redis-config created

3.查看已创建好的configmap

[root@k8smaster ~]# kubectl get cm
NAME           DATA   AGE
redis-config   1      31s

 4.查看cm的详细信息

[root@k8smaster ~]# kubectl describe cm redis-config

 5.创建pod的yaml文件

[root@k8smaster ~]# cat cm.yaml
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:
        name: redis-config     #前面创建的configmap名称
  restartPolicy: Never

 6.执行yaml创建pod

[root@k8smaster ~]# kubectl apply -f cm.yaml
pod/mypod created

 7.查看pod

[root@k8smaster ~]# kubectl get pod
NAME                      READY   STATUS      RESTARTS   AGE
mypod                     0/1     Completed   0          1h

8.查看pod的log中打印的配置信息

[root@k8smaster ~]# kubectl logs mypod

  • 以变量形式应用到pod中

 1.创建包含配置信息(变量)的yaml文件

[root@k8smaster ~]# cat myconfig.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myconfig
  namespace: default
data:
  special.level: info
  special.type: hello

2.基于yaml创建ConfigMap

[root@k8smaster ~]# kubectl apply -f myconfig.yaml
configmap/myconfig created

3.查看cm

[root@k8smaster ~]# kubectl get cm
NAME           DATA   AGE
myconfig       2      25s
redis-config   1      32m

4.查看cm详情

 5.创建pod的yaml文件

[root@k8smaster ~]# cat config-var.yaml
apiVersion: v1
kind: Pod
metadata:
  name: myconfigpod
spec:
  containers:
    - name: configbusybox
      image: busybox
      command: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]
      env:
        - name: LEVEL
          valueFrom:
            configMapKeyRef:
              name: myconfig              #前面创建的configmap的名称
              key: special.level          #configmap中的配置文件里的变量key
        - name: TYPE
          valueFrom:
            configMapKeyRef:
              name: myconfig
              key: special.type
  restartPolicy: Never

6.创建pod

[root@k8smaster ~]# kubectl apply -f config-var.yaml
pod/myconfigpod created

7.查看pod

[root@k8smaster ~]# kubectl get pod
NAME                      READY   STATUS      RESTARTS   AGE
myconfigpod               0/1     Completed   0          1h
mypod                     0/1     Completed   0          1h

8.查看pod的log可以看到pod中要执行的任务打印出的引用配置信息

[root@k8smaster ~]# kubectl logs myconfigpod

从上面两种应用方式可以看出,我们创建的configmap方式是不同的,在pod中引用key的方式也不同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QYHuiiQ

听说打赏的人工资翻倍~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值