configmap解释

在k8s运行期间会有一些依赖的配置文件,他们存在宿主机中的一个目录中或者代码里,如果配置放生变化,pod在另一台服务器启动,在没有这些配置的时候,可能会导致pod无法正常运行,如果pod没有挂载配置文件,修改配置会更加麻烦,configmap用于解决此类问题
有了configmap后,就可以实现配置与pod分离,哪怕pod挂了,重启的pod依然会读到这个配置文件,免除人工干预和业务不可用的状况出现

官方文档: https://kubernetes.io/zh/docs/concepts/configuration/configmap/

configmap例子

configmap示例:

apiVersion: v1
kind: ConfigMap
metadata:
name: game-demo
data:
# property-like keys; each key maps to a simple value
player_initial_lives: "3"
ui_properties_file_name: "user-interface.properties" # file-like keys
game.properties: |
enemy.types=aliens,monsters
player.maximum-lives=5
user-interface.properties: |
color.good=purple
color.bad=yellow
allow.textmode=true

1. configmap基于目录创建

#创建comfigmap文件夹
mkdir -p configmap/conf 写入演示配置:
[root@k8s-master01 ~]# cat configmap/conf/game.conf
lives=3
seret.code=ture [root@k8s-master01 ~]# cat configmap/conf/game2.conf
color.good=purple
user=tomcat [root@k8s-master01 configmap]# kubectl create configmap cmfromdir --from-file=conf/
configmap/cmfromdir created #检查
[root@k8s-master01 configmap]# kubectl get configmaps
NAME DATA AGE
cmformdir 3 5s #查看:
[root@k8s-master01 conf]# kubectl get cm cmfromdir -o yaml
apiVersion: v1
data:
game.conf: |
lives=3
seret.code=ture
game2.conf: |
color.good=purple
user=tomcat
kind: ConfigMap
metadata:
creationTimestamp: "2021-07-24T09:57:20Z"
name: cmfromdir
namespace: default
resourceVersion: "1533829"
uid: 45a67622-0ec0-4862-af9a-3fd29ea63653 #查看:
[root@k8s-master01 configmap]# kubectl describe configmaps cmfromdir
Name: cmfromdir
Namespace: default
Labels: <none>
Annotations: <none> Data
====
game.conf:
----
lives=3
seret.code=ture
test_env=chenleilei game2.conf:
----
color.good=purple
user=tomcat Events: <none>

2. configmap基于文件创建

# 如果一个目录中有很多配置文件,只需要其中一个配置文件,则可以使用以下方法

# 如 创建一个 redis配置文件
cat conf/redis.conf
password redis123 [root@k8s-master01 conf]# kubectl create cm cmfromfile --from-file=redis.conf
configmap/cmfromfile created 检查:
[root@k8s-master01 conf]# kubectl get cm cmfromfile -o yaml
apiVersion: v1
data:
redis.conf: |
password redis123 #检查此处是否存在值
kind: ConfigMap
metadata:
creationTimestamp: "2021-07-27T03:50:25Z"
name: cmfromfile
namespace: default
resourceVersion: "1776478"
uid: 575ae214-c1eb-43b2-8201-715921563de1 #检查这个目录:
[root@k8s-master01 conf]# ls
game2.conf game.conf redis.conf 通过: kubectl create cm cmfromfile --from-file=redis.conf
只把redis.conf 创建了。这是基于文件创建的办法。

3. 自定义配置文件名称

#单个文件创建自定义名

kubectl create configmap [configmap名] --from-file=[自定义的文件名字]=[需要自定义的文件] 

[root@k8s-master01 conf]# kubectl create cm cmspecialname --from-file=game-conf=game.conf
configmap/cmspecialname created [root@k8s-master01 conf]# kubectl get cm
NAME DATA AGE
cmspecialname 1 4s [root@k8s-master01 conf]# kubectl get configmaps cmspecialname -o yaml
apiVersion: v1
data:
game-conf: | ### 这里的配置文件名称已经改变了[这是k8s中的一个功能,但并不常用,知道就可以了]
lives=3
seret.code=ture
test_env=chenleilei
kind: ConfigMap
metadata:
creationTimestamp: "2021-07-29T02:49:46Z"
name: cmspecialname
namespace: default
resourceVersion: "1864212"
uid: 29536467-8f0c-4547-b9d6-aa8ecd1e0e51 #自定义多个文件名称,如下:
[root@k8s-master01 conf]# kubectl create cm cmspecialname3 --from-file=game-conf=game.conf --from-file=redis-conf=redis.conf
configmap/cmspecialname2 created #这样就把 game.conf和redis.conf分别定义为了 game-conf 与 redis-conf #查看configmap
[root@k8s-master01 conf]# kubectl get cm
NAME DATA AGE
cmformdir 3 19m
cmspecialname 1 3m18s
cmspecialname3 2 12s #新名称
envfromliteral 2 46h
kube-root-ca.crt 1 27d
redis-conf 1 40h

4. 选择命名空间创建configmap

# #通常,在不同的命名空间下也会有配置引用,但是不同命名空间无法相互使用configmap,所以需要在对应命名空间创建configmap
# configmap也可以创建在不同的命名空间下面,如在kube-public空间创建:
[root@k8s-master01 conf]# kubectl create cm cmspecialname3 --from-file=game-conf=game.conf --from-file=redis-conf=redis.conf -n kube-public
configmap/cmspecialname3 created [root@k8s-master01 conf]# kubectl get configmaps cmspecialname3 -o yaml
apiVersion: v1
data:
game-conf: |
lives=3
seret.code=ture
test_env=chenleilei
redis-conf: |
password redis123
kind: ConfigMap
metadata:
creationTimestamp: "2021-07-28T08:07:55Z"
name: cmspecialname3
namespace: default
resourceVersion: "1838693"
uid: a4ecd8c5-b8da-40cb-bc55-ec369b7f482f #这样会在 kube-public 命名空间创建 redis.conf 配置文件,检查:
[root@k8s-master01 conf]# kubectl get cm -n kube-public
NAME DATA AGE
cluster-info 1 25d
cmspecialname2 2 81s # 新建的configmap
kube-root-ca.crt 1 25d

5. 基于env文件创建configmap [--from-env-file ]

以env文件创建configmap: ‘--from-env-file’

#基于环境变量创建configmap [适用于环境变量较多的情况]
[root@k8s-master01 conf]# cat game.conf
lives=3
seret.code=ture [root@k8s-master01 conf]# kubectl create cm gameenvcm --from-env-file=game.conf
configmap/gameenvcm created [root@k8s-master01 conf]# kubectl get cm gameenvcm -o yaml
apiVersion: v1
data:
lives: "3"
seret.code: ture
test_env: chenleilei
kind: ConfigMap
metadata:
creationTimestamp: "2021-07-29T03:01:49Z"
name: gameenvcm
namespace: default
resourceVersion: "1865617"
uid: ee31d97a-48c2-48dd-b971-8f7b45255763

6. 基于命令行创建多个变量

--from-literal=

[root@k8s-master01 conf]# kubectl create cm envfromliteral --from-literal=level=INFO --from-literal=PASSWORD=redis123
configmap/envfromliteral created [root@k8s-master01 conf]# kubectl get cm envfromliteral -o yaml
apiVersion: v1
data:
PASSWORD: redis123
level: INFO
kind: ConfigMap
metadata:
creationTimestamp: "2021-07-27T04:20:49Z"
name: envfromliteral
namespace: default
resourceVersion: "1780015"
uid: 9f212cfc-2cce-42d5-9d62-bced22e869e4

7. 基于yaml文件创建configmap

[root@k8s-master01 conf]# cat cm.yaml apiVersion: v1kind: ConfigMapmetadata:  name: game-demodata:  # 类属性键;每一个键都映射到一个简单的值  player_initial_lives: "3"  ui_properties_file_name: "user-interface.properties"  # 类文件键  game.properties: |    enemy.types=aliens,monsters    player.maximum-lives=5      user-interface.properties: |    color.good=purple    color.bad=yellow    allow.textmode=true    #查看:[root@k8s-master01 conf]# kubectl create -f cm.yaml configmap/game-demo created#这种方式创建,在kubectl edit编辑的时候不太好改,会出现串行的问题。建议使用配置文件的方式来创建configmap问题 如:[root@k8s-master01 conf]# kubectl edit cm game-demo # Please edit the object below. Lines beginning with a '#' will be ignored,# and an empty file will abort the edit. If an error occurs while saving this file will be# reopened with the relevant failures.#apiVersion: v1data:  game.properties: "enemy.types=aliens,monsters\nplayer.maximum-lives=5    \n"   #会出现 \n 这种东西  player_initial_lives: "3"  ui_properties_file_name: user-interface.properties  user-interface.properties: |    color.good=purple    color.bad=yellow    allow.textmode=truekind: ConfigMapmetadata:  creationTimestamp: "2021-07-27T04:26:35Z"  name: game-demo  namespace: default  resourceVersion: "1780686"  uid: 270d373e-8485-4a15-970d-06de6728dae7

创建configmap总结:

#创建configmap的几种办法:kubectl create configmap -hkubectl create cm cmfromdir --from-file=conf/kubectl create cm cmfromfile --from-file=conf/redis.conf kubectl create cm cmspecialname --from-file=game-conf=game.confkubectl create cm cmspecialname2 --from-file=game-conf=game.conf  --from-file=redis-conf=redis.confkubectl create cm gameenvcm --from-env-file=game.confkubectl  create cm envfromliteral --from-literal=level=INFO --from-literal=PASSWORD=redis123kubectl  create -f cm.yaml

kubernetes configmap配置方法的更多相关文章

  1. kubernetes实战-配置中心(一)configmap资源

    在我们的环境中测试使用configmap资源,需要先对我们的环境进行一些准备,首先将dubbo服务调整为0个pod ,然后把zookeeper进行拆分: 拆分zk环境,模拟测试环境跟生产环境: 停止z ...

  2. Kubernetes(k8s)配置文件管理:ConfigMap

    目录 一.系统环境 二.前言 三.ConfigMap概览 四.创建ConfigMap 五.ConfigMap的使用 5.1 以环境变量的方式使用ConfigMap 5.2 以卷的方式使用ConfigM ...

  3. kubernetes Configmap secret的使用

    kubernetes configmap 核心作用是让配置信息和镜像解耦,pod可以使用configmap的数据生成配置文件.如果后端的pod配置文件要改变时,只需要更改下configmap里面的数据 ...

  4. configmap使用方法

    说明: kubernetes统一配置管理方案configmap,实现将配置文件从容器镜像中解耦,增强应用的可移植性.数据可直接注入pod对象中,为容器所使用,注入方式有挂载为存储卷和传递为环境变量两种 ...

  5. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  6. 在容器服务kubernetes上配置https

    当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:Port,NodeIP:NodePort和域名访问等.但是Kubernetes集群默认不支持HTTPS访问,如果用户希望 ...

  7. Kubernetes configMap(配置文件存储)

    Kubernetes configMap(配置文件存储) 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure ...

  8. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  9. CentOS防火墙iptables的配置方法详解

    CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助. iptables是与Linux ...

  10. Wampserver 2.5 多站点配置方法

    写在开头:本文适用于wampserver2.5版本,和wamp的老版本配置有语法上的区别,笔者正是因为被老版本的配置办法给整迷糊了所以才总结了一篇针对2.5版本的配置方法,如果您还停留在1.x或着已经 ...

随机推荐

  1. CentOS添加一个新的硬盘分区到挂载的过程

    1.分区 分区工具fdisk用法介绍    fdisk命令参数介绍    p.打印分区表.    n.新建一个新分区.    d.删除一个分区.    q.退出不保存.    w.把分区写进分区表,保 ...

  2. mysql 重新整理——索引优化explain简单介绍 [八]

    前言 做开发的我们晓得一个道理,就是说不是说你说这东西性能稳定就是性能稳定,你说发版本就发版本,这个是测试部门说了算的. 那么索引优化的关键也就是说一个我们来逐步调优,调优就要知道我们这条语句在mys ...

  3. FPGA技术助手,notepad++ 两个插件

    DS的时间很珍贵的 ,尤其是过了32岁以后,一身的病,扛不住996的制度.为了增加速度,只能想办法怎么在fpga工作上面降低时间.你有心思点来点去的GUI的界面.还不如用一个脚本完全做完.notepa ...

  4. 力扣349(java&python)-两个数组的交集(简单)

    题目: 给定两个数组 nums1 和 nums2 ,返回 它们的交集 .输出结果中的每个元素一定是 唯一 的.我们可以 不考虑输出结果的顺序 . 示例 1: 输入:nums1 = [1,2,2,1], ...

  5. 基于 Observable 构建前端防腐策略

    ​简介:To B 业务的生命周期与迭代通常会持续多年,随着产品的迭代与演进,以接口调用为核心的前后端关系会变得非常复杂.在多年迭代后,接口的任何一处修改都可能给产品带来难以预计的问题.在这种情况下,构 ...

  6. “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席

    ​简介:2021年12月8-9日,"2021ISIG中国产业智能大会" 将在上海举行.阿里巴巴资深技术专家,钉钉宜搭创始人叶周全将作为特邀嘉宾出席大会. 2021年12月8-9日, ...

  7. Cube 技术解读 | 详解「支付宝」全新的卡片技术栈

    ​简介: 魔方卡片(Cube),让 App 首页实现敏捷更新. ​ CodeHub#7 正式落幕,来自蚂蚁集团的技术专家「京君」与掘金社区的开发者们分享了「支付宝」全新的卡片技术栈--魔方卡片(Cub ...

  8. [Go] Golang Context 包的注意点

    Golang context 包,定义了context 类型,携带截止日期,取消信号,和其它跨API请求作用域及进程间的值. 到服务器的请求应该创建一个 Context,服务器对外的调用应该接受一个C ...

  9. [FE] 实时视频流库 hls.js 重载切换资源的方式

    hls 播放需要先 attachMedia,然后 loadSource. 如果切换 resource,需要先执行 hls.destroy(),否则会出现混乱. destroy 之后再依次进行 hls ...

  10. WPF 性能测试

    本文收藏我给 WPF 做的性能测试.在你开始认为 WPF 的性能存在问题的时候,不妨来这篇博客里找找看我做过的测试.我记录的测试都是比较纯净的测试项目,没有业务逻辑的干扰,写法也正常,可以更加真实反映 ...