kubernetes configMap详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes configMap详解相关的知识,希望对你有一定的参考价值。

Kubernetes的ConfigMap说明

  这篇博文,我们来说一说,关于在kubernetes的pod中自定义配置的问题。

  我们知道,在几乎所有的应用开发中,都会涉及到配置文件的变更,比如说在web的程序中,需要连接数据库,缓存甚至是队列等等。而我们的一个应用程序从写第一行代码开始,要经历开发环境、测试环境、预发布环境只到最终的线上环境。而每一个环境都要定义其独立的各种配置。如果我们不能很好的管理这些配置文件,你的运维工作将顿时变的无比的繁琐。为此业内的一些大公司专门开发了自己的一套配置管理中心,如360的Qcon,百度的disconf等。kubernetes也提供了自己的一套方案,即ConfigMap。kubernetes通过ConfigMap来实现对容器中应用的配置管理。

 创建ConfigMap

创建ConfigMap的方式有4种:

  • 通过直接在命令行中指定configmap参数创建,即--from-literal

  • 通过指定文件创建,即将一个配置文件创建为一个ConfigMap--from-file=<文件>

  • 通过指定目录创建,即将一个目录下的所有配置文件创建为一个ConfigMap,--from-file=<目录> 
    通过yaml文件来创建,另一种是通过kubectl直接在命令行下创建。

  • 事先写好标准的configmap的yaml文件,然后kubectl create -f 创建



使用ConfigMap

使用ConfigMap有三种方式,一种是通过环境变量的方式,直接传递pod,另一种是通过在pod的命令行下运行的方式,第三种是使用volume的方式挂载入到pod内

更新 ConfigMap 后:

  • 使用该 ConfigMap 挂载的 Env 不会同步更新

  • 使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新

ENV 是在容器启动的时候注入的,启动之后 kubernetes 就不会再改变环境变量的值,且同一个 namespace 中的 pod 的环境变量是不断累加的,参考 Kubernetes中的服务发现与docker容器间的环境变量传递源码探究。为了更新容器中使用 ConfigMap 挂载的配置,可以通过滚动更新 pod 的方式来强制重新挂载 ConfigMap,也可以在更新了 ConfigMap 后,先将副本数设置为 0,然后再扩容。

Kubernetes的ConfigMap说明

参考https://www.cnblogs.com/breezey/p/6582082.html

kubernetes configMap 热更新测试

https://www.kubernetes.org.cn/3138.html

Kubernetes的ConfigMap详解

参考https://blog.csdn.net/liukuan73/article/details/79492374


以上是关于kubernetes configMap详解的主要内容,如果未能解决你的问题,请参考以下文章

k8s 意外集锦 - configmap 挂载 目录 只读

Kubernetes集群Configmap配置存储资源(三十六)

Kubernetes存储之ConfigMap

Kubernetes-ConfigMap

Kubernetes之ConfigMap和Secret

Linux企业运维——Kubernetes存储之Configmap配置管理