3.5 Pod的配置管理

作者: ZYvette | 来源:发表于2020-07-27 21:15 被阅读0次

应用所需的配置信息与程序进行分离,这样可以使应用程序被更好地复用,通过不同的配置也能实现更灵活的功能

ConfigMap概述

(1) 什么是ConfigMap

ConfigMap 是以Key-Value的形式存储在Kubernetes中,用于描述一个变量的值或者是完整配置文件内容。
通常用Yaml文件,或者kubectl create configmap命令行的方式创建。

(2) ConfigMap的应用

ConfigMap供容器使用的典型用法如下。
a. 生成为容器内的环境变量。
b. 设置容器启动命令的启动参数(需设置为环境变量)。
c. 以Volume的形式挂载为容器内部的文件或目录。

创建ConfigMap资源对象

1.通过YAML配置文件方式创建

apiVersion: v1
kind: ConfigMap
metadata: 
  name: cm-appvers
data:
  apploglevel: info
  appdatadir: /var/data

创建命令:

kubectl create -f cm-appvars.yaml

2.通过kubectl命令行方式创建

不使用YAML文件,直接通过kubectl create configmap也可以创建ConfigMap,可以使用参数--from-file或--from-literal指定内容,并且可以在一行命令中指定多个参数。
(1)通过--from-file参数从文件中进行创建,可以指定key的名称,也可以在一个命令行中创建包含多个key的ConfigMap,语法为:

kubectl create configmap Name --from-file=[key=]source --from-file=[key=]source

(2)通过--from-file参数从目录中进行创建,该目录下的每个配置文件名都被设置为key,文件的内容被设置为value,语法为:

kubectl create configmap Name --from-file=config-files-dir

(3)使用--from-literal时会从文本中进行创建,直接将指定的key#=value#创建为ConfigMap的内容,语法为:

kubectl create configmap --from-literal=key=value  ...

在Pod中使用ConfigMap

容器应用对ConfigMap的使用有以下两种方法。

1.通过环境变量方式使用ConfigMap

env:
-name: APPLOGLEVEL   #定义变量名称
  valuefrom:
  configmapkeyref:
      name: cm-appvars          #环境变量取自的configmap名称
      key: apploglevel            # 变量的key

Kubernetes从1.6版本开始,引入了一个新的字段envFrom,实现了在Pod环境中将ConfigMap(也可用于Secret资源对象)中所有定义的key=value自动生成为环境变量:

envFrom:
- configMapRef:
      name: cm-appvars           #加载所有cm-appvars的kv到自动生成环境变量
  • 注意:环境变量的名称受POSIX命名规范([a-zA-Z_][a-zA-Z0-9_]*)约束,不能以数字开头。如果包含非法字符,则系统将跳过该条环境变量的创建,并记录一个Event来提示环境变量无法生成,但并不阻止Pod的启动。

2.通过volumeMount使用ConfigMap

Containers:
-   name: testabc
...
     volumeMounts:
     -  name: serverxml                  #挂载的volume名称
         mountPath:  /configfiles      #挂载到容器内的目录
Volumes:
-   name: serverxml                             #volume 名称
     configMap:
         name: cm-appconfigfiles           #使用的configmap

使用ConfigMap的限制条件

  • ConfigMap必须在Pod之前创建。
  • ConfigMap受Namespace限制,只有处于相同Namespace中的Pod才可以引用它。
  • ConfigMap中的配额管理还未能实现。
  • 静态Pod无法饮用ConfigMap
  • a. 用挂载,内部只能为目录,无法挂载为文件
    b. 目录原先有文件会被覆盖
    c. 如果需要保留目录下其他文件,可以cm挂载到临时目录,然后用文件肤质或者链接到实际配置目录下。

TODO 什么是配额管理,后边在资源管理会讲。

相关文章

  • 3.5 Pod的配置管理

    应用所需的配置信息与程序进行分离,这样可以使应用程序被更好地复用,通过不同的配置也能实现更灵活的功能 Config...

  • 3 深入掌握Pod(1)

    本章主要讲Pod和容器的使用、应用配置管理、Pod的控制和调度管理、Pod的升级和回滚,以及Pod的扩缩容机制等内...

  • Kubernetes configmap

    ConfigMap 更新后滚动更新 Pod 往往在使用kubernetes configmap作为业务的配置管理时...

  • 简要概述kubernetes基本概念

    根据个人理解,可将kubernetes的各核心资源对象分为节点控制,网络,pod,请求转发,标签与注解,配置管理,...

  • kubernetes Pod的配置管理-ConfigMap

    背景 应用打包为容器镜像后,可以通过环境变量或者外挂文件的方式在创建容器时进行配置注入,但在大规模容器集群的环境中...

  • configmap

    一.目的 把应用的代码和配置分开,通过配置configmap管理pod,一种统一的集群配置管理方案。ConfigM...

  • 《k8s权威指南》读书笔记-Pod的配置管理&获取Pod信息

    2.Pod的配置管理 2.1 ConfigMap的产生背景 外置化配置映射到容器内应用部署的一个最佳实践是将应用所...

  • 云信升级3.5 头文件找不到

    云信3.5 iOS更新了很多内容,pod升级后出现 not found 错误: 这个是因为sdk的输出产品改成 f...

  • Nacos - 配置管理(3)

    4 Nacos配置管理基础应用 4.1 Nacos配置管理模型 对于Nacos配置管理,通过Namespace、g...

  • 配置管理就是配置管理员的事儿吗?

    一说起配置管理,有些部门就会说,我们没有专门的配置管理员,这块工作没法做啊。那么,配置管理就只是配置管理员的事儿吗...

网友评论

    本文标题:3.5 Pod的配置管理

    本文链接:https://www.haomeiwen.com/subject/ounwkktx.html