前言
略
导引
Pod需要解决如下问题
- 不可变基础设施(容器)的可变配置
- 敏感信息的存储和使用(eg: 密码、token等)
- 集群中Pod的字我身份验证
- 容器运行资源的配置管理
- 容器的运行安全管控
- 容器启动前置条件校验等
对应的解决办法
- ConfigMap
- Secret
- ServiceAccount
- Spec.Containers[].resources.limits/requests
- Spec.Containers[].SecurityContext
- Spec.InitContainers
ComfigMap
主要管理容器运行所需的配置文件、环境变量、命令行参数等可变配置;用于解耦容器镜像和可变配置,从而保障工作负载(Pod)的可移植性
示例
创建
使用
使用要点
- ConfigMap文件大小限制: 1Mb (ETCD的要求)
- Pod只能引用相同Namespace中的ConfigMap
- Pod引用的ConfigMap不存在时,Pod无法创建启动,即Pod创建前,需配置好ConfigMap
- 使用envFrom从ConfigMap来配置环境变量时,如果ConfigMap中的某些Key被认为无效(比如key名称中带有数字),该环境变量将不会被注入容器,但是Pod可以正常创建
- 只有通过k8s api创建的Pod才能使用ConfigMap,其它方式创建的Pod(如manifes创建的static pod)不能使用ConfigMap
secret
在集群中存储密码、token等敏感信息用的资源对象,其中的敏感数据采用base-64编码保存,相比存储在明文的ConfigMap中,更规范、更安全
- 示例
apiVersion: v1
kind: Secret
#--------Secret元数据--------
metadata:
name: mysecret
namespace: kube-system
#--------Sercet类型--------
type: Opaque
data:
#--------Sercet存储的数据-------
username: xxx
password: xxx
-
Secret主要有如下类型
1.Opaque
2.kubernetes.io/service-account-token
3.kubernetes.io/dockerconfigjson
4.bootstrap.kubernetes.io/token -
创建
-
使用
-
配置docker pull
使用要点
- Secret文件大小限制: 1Mb
ServiceAccount
用于解决Pod在集群中的身份认证问题,其中认证使用的授权信息,则是Secret(type=kubernetes.io/service-account-token)进行管理
语法
示例
容器资源配置管理(Spec.Containers[].resources.limits/requests)
Security Context
InitContainer
结语
… …