• k8s配置集ConfigMap详解


    ConfigMap介绍

    ConfigMap和Secret是Kubernetes系统上两种特殊类型的存储卷,ConfigMap对象用于为容器中的应用提供配置文件等信息。但是比较敏感的数据,例如密钥、证书等由Secret对象来进行配置。它们将相应的配置信息保存于对象中,而后在Pod资源上以存储卷的形式挂载并获取相关的配置,以实现配置与镜像文件的解耦。

    Pod可以通过三种方式来使用ConfigMap,分别为:

    • 将ConfigMap中的数据设置为环境变量
    • 将ConfigMap中的数据设置为命令行参数
    • 使用Volume将ConfigMap作为文件或目录挂载

    下面主要介绍使用Volume将ConfigMap作为文件或目录挂载

    1.首先在容器外面创建一个redis.conf的配置文件,然后根据这个配置文件创建出一个名为redis.conf的ConfigMap

    image

    2.通过kubectl get cm redis.conf -o yaml可以将刚才创建的ConfigMap以yaml格式输出

    image

    3.剔除一些创建时间等元数据,精简过后的ConfigMap的yaml文件的内容如下所示

    apiVersion: v1
    data:    #data里面是配置文件的名字以及相应的配置,以key:value的格式来书写。
      redis.conf: |    #key:redis.conf (默认是你创建ConfigMap时--from-file=redis.conf那哪个配置文件就叫什么名字)   
        appendonly yes #value:配置文件的内容
    kind: ConfigMap
    metadata:
      name: redis-conf
      namespace: default
    

    注:data里可以包含多个配置文件的数据,所以data里面是通过key:value的形式来表示对应的配置文件的名字及内容的
    创建完ConfigMap后通过创建一个pod来具体讲述一下ConfigMap是如何使用的

    apiVersion: v1
    kind: Pod
    metadata:
      name: redis
    spec:
      containers:
      - name: redis
        image: redis
        command:                        #创建容器后在容器里面执行的命令
          - redis-server
          - "/redis-master/redis.conf"  #指的是redis容器内部的位置
        ports:
        - containerPort: 6379
        volumeMounts:
        - mountPath: /data              #指的是容器内部的/data目录
          name: data                    #卷挂载的名字,与下面相同名字的volumes进行匹配并挂载
        - mountPath: /redis-master
          name: config
      volumes:
        - name: data
          emptyDir: {}
        - name: config                  #将volumeMounts需要进行挂载且name为config的目录以配置集的方式进行挂载
          configMap:
            name: redis-conf            #这是配置集的名称,k8s会根据这个名字来寻找对应的ConfigMap
            items:
            - key: redis.conf           #这是ConfigMap当中data里面的key值,也就是要挂载的配置文件的名字,k8s要根据这个key值从名为redis.conf的ConfigMap中找到需要挂载的配置文件的真正内容。
              path: redis.conf          #这是最终容器当中配置文件的名字,也就是容器中配置文件路径为/redis-master/redis.conf
    
    折叠

    用图片描述对应关系就是如下所示:

    image

    4.另外还可通过kubectl edit来编辑ConfigMap从而直接修改容器内部的配置文件的内容:

    image
    综上就是一个ConfigMap从创建到使用的全部过程,最近又有时间将之前的学习笔记编辑成博客,以后也会一直坚持下去,用自己认为最通俗易懂的表达方式来分享自己所得,希望对大家有帮助,若转载请标明出处。

  • 相关阅读:
    PoE压分如何解决,A-level复议or重考?
    坠落的蚂蚁(暑假每日一题 40)
    UE集成第三方库开发技巧、自定义第三方库输出路径
    高性能三防工业平板电脑 防摔防爆电容屏工控平板
    IO多路复用(select模型实现监控两个设备:自定义设备和鼠标设备)
    Apache Drill的学习
    2022年陕西省职称申报可以申报什么专业
    3万字100道大数据技术之高频面试题总结(附答案)
    CRM项目记录(七)
    windows安装mysql
  • 原文地址:https://www.cnblogs.com/zhangpeiyao/p/16515561.html