Pod 的存储之Configmap

一、Configmap介绍

​ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象。

1、使用目录创建

  1. 在我们的 configmap-map 文件夹下有两个文件分别为: test-1 test-2 里面的内容分别为:
  2. cat test-1 :
  3. enemies=aliens
  4. lives=3
  5. enemies.cheat=true
  6. enemies.cheat.level=noGoodRotten
  7. secret.code.passphrase=UUDDLRLRBABAS
  8. secret.code.allowed=true
  9. secret.code.lives=30
  10. cat test-2 :
  11. color.good=purple
  12. color.bad=yellow
  13. allow.textmode=true
  14. how.nice.to.look=fairlyNice
  15. 创建:kubectl create configmap zutuanxue --from-file=configmap-test
  16. # —from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就是文件的内容

创建完成后我们来看一下信息:

通过命令 kubectl get configmaps zutuanxue -o yaml 查看一下完整的信息:

2、使用文件创建

  1. 我们依然使用 test-1 test-2 这两个文件
  2. kubectl create configmap zutuanxue-1 --from-file=configmap-test/test-2
  3. # —from-file 这个参数可以使用多次,你可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个目录是一样的

我们来看一下效果:

3、使用字面值创建

  1. 使用文字值创建,利用 from-literal 参数传递配置信息,该参数可以使用多次,格式如下:
  2. kubectl create configmap zutuanxue --from-literal=test.how=hello-word --from-literal=test.type=hi-word

我们来看一下效果:

二、Pod 中使用 ConfigMap

1、使用 ConfigMap 来替代环境变量

  1. vim test.yaml
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: special-config
  6. namespace: default
  7. data:
  8. special.how: hello-word
  9. special.type: hi-word
  10. #-----------------------------# 分割线 #--------------------------------------#
  11. vim test-env.yaml
  12. apiVersion: v1
  13. kind: ConfigMap
  14. metadata:
  15. name: env-config
  16. namespace: default
  17. data:
  18. log_level: INFO
  19. #-----------------------------# 分割线 #--------------------------------------#
  20. vim test-pod.yaml
  21. apiVersion: v1
  22. kind: Pod
  23. metadata:
  24. name: dapi-test-pod
  25. spec:
  26. containers:
  27. - name: test-container
  28. image: docker.io/busybox
  29. command: [ "/bin/sh", "-c", "env" ]
  30. env:
  31. - name: SPECIAL_LEVEL_KEY
  32. valueFrom:
  33. configMapKeyRef:
  34. name: special-config
  35. key: special.how
  36. - name: SPECIAL_TYPE_KEY
  37. valueFrom:
  38. configMapKeyRef:
  39. name: special-config
  40. key: special.type
  41. envFrom:
  42. - configMapRef:
  43. name: env-config
  44. restartPolicy: Never

运行以后我们来看一下结果:

2、用 ConfigMap 设置命令行参数

  1. 这里我们依然使用 test.yaml 文件内的参数:
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: special-config
  6. namespace: default
  7. data:
  8. special.how: hello-word
  9. special.type: hi-word
  10. #-----------------------------# 分割线 #--------------------------------------#
  11. vim test-pod-1.yaml
  12. apiVersion: v1
  13. kind: Pod
  14. metadata:
  15. name: dapi-test-pod-1
  16. spec:
  17. containers:
  18. - name: test-container
  19. image: docker.io/busybox
  20. command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
  21. env:
  22. - name: SPECIAL_LEVEL_KEY
  23. valueFrom:
  24. configMapKeyRef:
  25. name: special-config
  26. key: special.how
  27. - name: SPECIAL_TYPE_KEY
  28. valueFrom:
  29. configMapKeyRef:
  30. name: special-config
  31. key: special.type
  32. restartPolicy: Never

运行以后我们来看一下结果:

3、通过数据卷插件使用ConfigMap

  1. 这里我们依然使用 test.yaml 文件内的参数:
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: special-config
  6. namespace: default
  7. data:
  8. special.how: hello-word
  9. special.type: hi-word
  10. #-----------------------------# 分割线 #--------------------------------------#
  11. 在数据卷里面使用这个 ConfigMap,有不同的选项。最基本的就是将文件填入数据卷,在这个文件中,键就是文件名,键值就是文件内容。
  12. #-----------------------------# 分割线 #--------------------------------------#
  13. vim test-pod-2.yaml
  14. apiVersion: v1
  15. kind: Pod
  16. metadata:
  17. name: dapi-test-pod-2
  18. spec:
  19. containers:
  20. - name: test-container
  21. image: docker.io/busybox
  22. command: [ "/bin/sh", "-c", "sleep 600s" ]
  23. volumeMounts:
  24. - name: config-volume
  25. mountPath: /etc/config
  26. volumes:
  27. - name: config-volume
  28. configMap:
  29. name: special-config
  30. restartPolicy: Never

运行以后我们来看一下结果:

二十、Pod的存储之Configmap的更多相关文章

  1. kubernetes系列12—二个特色的存储卷configmap和secret

    本文收录在容器技术学习系列文章总目录 1.configmap 1.1 认识configmap ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件.ConfigMa ...

  2. 二十二、Pod存储之volume

    Pod 的存储之volume ​容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状 ...

  3. JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习

    JAVA之旅(二十)-HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定 ...

  4. AngularJS进阶(二十九)AngularJS项目开发技巧之localStorage存储

    AngularJS项目开发技巧之localStorage存储       注: localStorage深度学习 绪 项目开发完毕,测试阶段发现后台管理端二维码生成有问题,问题在于localStora ...

  5. 二十一、Pod的存储之Secret

    Pod 的存储之Secret 一.Secret 存在意义 ​Secret 解决了密码.token.密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec中.Secret 可以 ...

  6. 了解Kubernetes主体架构(二十八)

    前言 Kubernetes的教程一直在编写,目前已经初步完成了以下内容: 1)基础理论 2)使用Minikube部署本地Kubernetes集群 3)使用Kubeadm创建集群 接下来还会逐步完善本教 ...

  7. Docker+ Kubernetes已成为云计算的主流(二十五)

    前言 最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享.对于k8s,还是上云更为简单.稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产 ...

  8. kubernetes实战(二十八):Kubernetes一键式资源管理平台Ratel安装及使用

    1. Ratel是什么? Ratel是一个Kubernetes资源平台,基于管理Kubernetes的资源开发,可以管理Kubernetes的Deployment.DaemonSet.Stateful ...

  9. Web 前端开发人员和设计师必读文章推荐【系列二十八】

    <Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

随机推荐

  1. 关于python如何引用excel文件

    关于python如何引用excel文件 import pandas as pd #引用pandas库,as:将pandas简写为pd Nowcoder = pd.read_excel("1. ...

  2. 在 Linux 中安装 MongoDB 的流程

    下载 MongoDB官网下载社区版的安装包: 解压 上传至 Linux,安装位置自行选择.把压缩包解压到安装的目录下. 可重命名解压的文件夹名: mv mongodb-linux-x86_64-rhe ...

  3. 延时任务-基于redis zset的完整实现

    所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消.订单30分钟不付款自动取消,这个任务就是一个延时任务. 我之前已经写过2篇关于延时任务的文章: <完 ...

  4. D - Distinct Trio

    D - Distinct Trio 题意:求三个数个各不相同的数目. 题解:正面考虑比较困难,可以反向思考,在总值上减去不符合的即可 #include<bits/stdc++.h> usi ...

  5. python一行代码格式化日期

    print("{}/{}/{} {}:{}.{}".format(*time.localtime()))

  6. ubuntu 搭建网络文件系统

    一.安装 miniserver sudo curl -L https://github.com/svenstaro/miniserve/releases/download/v0.4.1/miniser ...

  7. 闭包 与 js内存管理

    参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management            https://blog ...

  8. 第七章 完成kubernetes集群部署并验证

    在其中一运算个节点上操作就行 创建nginx资源配置清单的yaml文件 [root@hdss7-21 ~]# vim /opt/kubernetes/conf/nginx-ds.yaml apiVer ...

  9. Homework4

    书籍链接:https://www.ituring.com.cn/article/13466(why Software Development Methodologies Suck?) 问:读 why ...

  10. CDH6.2.0安装并使用基于HBase的Geomesa

    1. 查看CDH 安装的hadoop 和 hbase 对应的版本 具体可以参考以下博客: https://www.cxyzjd.com/article/spark_Streaming/10876290 ...