Kubernetes权威指南

3.5 Pod的配置管理

2020-07-27  本文已影响0人  ZYvette

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

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到自动生成环境变量

2.通过volumeMount使用ConfigMap

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

使用ConfigMap的限制条件

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

上一篇 下一篇

猜你喜欢

热点阅读