编辑
2025-08-22
K8S(重新复习)
00

目录

一、概念
二、ConfigMap使用

一、概念

ConfigMap是Kubernetes中用于存储非敏感配置数据的API对象,它将配置信息与容器镜像解耦,便于应用配置的修改,

二、ConfigMap使用

txt
‌env单个变量注入方式‌ 作用:将ConfigMap中的特定键值注入为Pod容器的环境变量 实现过程: 通过valueFrom.configMapKeyRef精确指定要引用的ConfigMap名称和键名 只提取ConfigMap中的特定配置项(如示例中的log_level) 生成独立的环境变量(可自定义变量名与键名不同) 典型场景:需要单独控制的关键配置参数 ‌envFrom批量注入方式‌ 作用:将整个ConfigMap的所有键值对自动转换为环境变量 实现过程: 通过configMapRef直接引用整个ConfigMap ConfigMap中的每个键都会成为容器的环境变量(键名作为变量名) 自动包含ConfigMap的所有数据变更 注意事项:需确保键名符合环境变量命名规范(大写字母+下划线) ‌volume挂载方式‌ 作用:将ConfigMap内容作为文件挂载到容器文件系统 实现过程: 在volumes段声明使用ConfigMap作为存储卷 通过volumeMounts将卷挂载到容器指定路径 每个键值对会生成独立文件(文件名=键名,内容=值) 核心优势: 支持配置文件的热更新(kubectl update后约1分钟同步) 保持原有文件格式(如nginx.conf的缩进和语法) 可通过subPath挂载单个文件而不影响目录 ‌对比总结: 精细控制选env方式 批量导入用envFrom 配置文件场景必须用volume挂载 volume方式唯一支持配置热更新(需应用支持重载)

image.png

yml
apiVersion: v1 kind: ConfigMap metadata: name: app-config data: # 键值对配置 log_level: "DEBUG" max_connections: "100" # 文件内容配置 nginx.conf: | server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; } }
yml
apiVersion: v1 kind: Pod metadata: name: configmap-demo spec: containers: - name: nginx-container image: nginx:1.21 # 方式1:env单个变量注入 env: - name: LOG_LEVEL valueFrom: configMapKeyRef: name: app-config key: log_level # 方式2:envFrom批量注入 envFrom: - configMapRef: name: app-config # 方式3:volume挂载配置文件 volumeMounts: - name: config-volume mountPath: /etc/nginx/conf.d # 此目录原有文件将被覆盖 volumes: - name: config-volume configMap: name: app-config items: - key: nginx.conf path: nginx.conf

本文作者:松轩(^U^)

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

Document