Skip to main content

ConfigMap

ConfigMap 以键值对保存非机密配置,让配置与镜像分离。三种创建方式:
也可以用 YAML 声明式创建:

注入为环境变量

挂载为文件

挂载方式下更新 ConfigMap,文件会自动更新。env 注入则需重启 Pod 才生效。

Secret

Secret 保存密码、Token、证书等敏感数据,结构与 ConfigMap 类似,数据以 base64 编码存储。
与 ConfigMap 的区别:Secret 用于敏感数据,支持类型校验;ConfigMap 用于普通配置。
base64 只是编码不是加密。生产环境应开启 encryption at rest,让 Secret 在 etcd 中加密存储。

Volume 常见类型

Volume 生命周期与 Pod 一致。常见类型:

持久化存储体系

普通 Volume 随 Pod 消亡。持久化数据需要三层对象协作:
  • PV(PersistentVolume):集群里的一块存储。
  • PVC(PersistentVolumeClaim):用户对存储的申请,说明大小和访问模式。
  • StorageClass:存储的”模板”,定义用哪个 provisioner 动态创建 PV。
关系:Pod 引用 PVC,PVC 绑定 PV,StorageClass 自动供给 PV。动态供给流程:
  1. 管理员创建 StorageClass,指定 provisioner。
  2. 用户提交 PVC,写明 storageClassName 和容量。
  3. provisioner 自动创建 PV 并与 PVC 绑定。
访问模式:

完整示例:PVC + Deployment

删除 PVC 前确认 reclaimPolicyDelete 会连同底层数据一起删除,Retain 则保留。

延伸阅读