应用配置管理

ConfigMap:主要管理容器运行所需要的配置文件,环境变量,命令行参数等可变配置,用于解耦容器镜像和可变配置,
使用场景:
1、不可变基础设施(容器)的可变配置
2、敏感信息的存储和使用(如密码、token)
3、集群中Pod自我身份认证
4、容器运行资源的配置管理
5、容器的运行安全管控
6、容器启动前置条件校验等(例如启动前检查dns是否可用,网络是否联通)

在这里插入图片描述
ConfigMap创建
创建语法
kubectl create configmap [NAME] [DATA]
DATA:
1、指定文件或目录
2、 指定键值对
DATA为文件的方式结果:
在这里插入图片描述
使用:
ConfigMap主要是被 pod使用、一般用于挂载Pod用的配置文件、环境变量、命令行参数等。
在这里插入图片描述
第一种配置环境变量。环境变量通过 valueFrom, ConfigMapKeyRef 字段,name 指定 ConfigMap 名,key 是 ConfigMap.data 里面的 key。在容器启动后容器中执行 env 将看到一个 SPECIAL_LEVEL_KEY 环境变量;
第二种配置命令行参数。命令行参数使用ConfigMap定义的环境变量
第三种通过 volume 挂载的方式直接挂到容器的某一个目录下面去。把 special-config 这个 ConfigMap 里面的内容挂到容器里面的 /etc/config 目录下

注意事项
ConfigMap 注意要点
1、Configmap问价大小限制1MB(ETCD 里面,数据的写入是有大小限制的)
2、Pod只能引用相同namespace中的ConfigMap
3、pod引用的ConfigMap不存在时,Pod无法创建成功,即pod创建前需要先创建好ConfigMap
4、使用envFrom从ConfigMap来配置环境变量时,如果ConfigMap中某些key被认为无效(例如key名称中带有数字,该环境变量将不会注意、入容器,但是pod可以正常创建
5、只有通过k8s api创建的pod才能使用ConfigMap,其他方式创建的pod

Secret:是在集群中用于存储密码、token等敏感信息用的资源对象,其中的敏感数据采用base-64编码保存,相比存储在明文的ConfigMap中更规范及安全

Secret主要有如下类型 :

  • type=Opaque
  • type=kubernetes.io/service-account-token
  • type=kubernetes.io/dockerconfigjson
  • type=bootstrap.kubernetes.io/token

第一种是 Opaque,它是普通的 Secret 文件;
第二种是 service-account-token,是用于 service-account 身份认证用的 Secret;
第三种是 dockerconfigjson,这是拉取私有仓库镜像的用的一种 Secret;
第四种是 bootstrap.token,是用于节点接入集群校验用的 Secret。
在这里插入图片描述

Secret创建可以是用户自己创建,也有Secret是系统自动创建,例如K8s为每个namespace的默认用户(default ServiceAccount)创建的Secret
手动创建命令:kubectl create secret generic [NAME][DATA][TYPE]
DATA可以指定文件或键值对
type 默认是opaque

Secret主要被Pod使用,一般通过volume挂载到指定容器目录,供容器中业务使用,另外在需要访问私有镜像仓库时,也可以使用Secret来实现
在这里插入图片描述
注意事项
1、Secret文件大小限制1M
2、Secret虽然采用base-64编码,但是可以简单解码查看原始信息,因此机密信息采用Secret存储仍需要慎重考虑或者Secret访问者进行控制,对Secret加密有较强需求,可以考虑结合kubernetes+Vault来解决敏感信息的加密和权限管理
3、Secret最佳实践,因为list/wath一般处理将获取到namespace下所有secret,因此不建议采用list/watch方式获取Secret信息,推荐使用GET来获取需要的Secret,从而减少更多Secret暴露的可能性

Resource:目前内部支持类型有三种:CPU、内存,以及临时存储。当用户觉得这三种不够,有自己的一些资源,比如说 GPU,或者其他资源,也可以自己来定义,配置时指定的数量必须为整数。目前资源配置主要分成 request 和 limit 两种类型,一个是需要的数量,一个是资源的界限。CPU、内存以及临时存储都是在 container 下的 Resource 字段里进行一个声明。

  • CPU: 单位 millicore 1 Core=1000millicore
  • Memory: 单位 : Byte
  • ephemeral storage( 临时存储):单位 : Byte

配置方法:
资源配置分为request/limit 两种类型

  • CPU:
    spec.containers[].resources.limits.cpu
    spec.containers[].resources.requests.cpu
  • Memory:
    spec.containers[].resources.limits.memory
    spec.containers[].resources.requests.memory
  • ephemeral storage( ):
    spec.containers[].resources.limits.ephemeral-storage
    spec.containers[].resources.requests.ephemeral-storage
    在这里插入图片描述

InitContainer:它其实主要为普通 container 服务,一般InitContainer用于普通Container启动前的初始化(如配置文件准备)或者普通Container启动的前置条件检验(网络是否联通)
1、InitContainer 首先会比普通 container 先启动,并且直到所有的 InitContainer 执行成功后,普通 container 才会被启动;
2、InitContainer 之间是按定义的次序去启动执行的,执行成功一个之后再执行第二个,而普通的 container 是并发启动的;
3、InitContainer 执行成功后就结束退出,而普通容器可能会一直在执行。它可能是一个 longtime 的,或者说失败了会重启,这个也是 InitContainer 和普通 container 不同的地方。

在这里插入图片描述

serviceAccount:主要用于解决Pod在集群中的身份认证问题,其中认证使用的授权信息则利用Secret(type=kubernetes.io/service-account-token)进行管理
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值