当前位置: 首页 > wzjs >正文

好看的网站地图样式百度一下你就知道官网

好看的网站地图样式,百度一下你就知道官网,网络安全防护,java做网站有什么优势文章目录Kubernetes ConfigMap 详解1. ConfigMap 基本概念1.1 核心特性1.2 与 Secret 的对比2. ConfigMap 创建方式2.1 从字面值创建2.2 从文件创建2.3 从环境文件创建2.4 YAML 定义方式3. ConfigMap 使用方式3.1 作为环境变量3.2 作为命令行参数3.3 作为卷挂载3.4 子路径挂载&…

文章目录

  • Kubernetes ConfigMap 详解
    • 1. ConfigMap 基本概念
      • 1.1 核心特性
      • 1.2 与 Secret 的对比
    • 2. ConfigMap 创建方式
      • 2.1 从字面值创建
      • 2.2 从文件创建
      • 2.3 从环境文件创建
      • 2.4 YAML 定义方式
    • 3. ConfigMap 使用方式
      • 3.1 作为环境变量
      • 3.2 作为命令行参数
      • 3.3 作为卷挂载
      • 3.4 子路径挂载(不自动更新)
    • 4. 热更新机制
      • 4.1 自动更新特性
      • 4.2 更新操作
      • 4.3 更新延迟
    • 5. 高级用法
      • 5.1 不可变ConfigMap
      • 5.2 大小限制与最佳实践
      • 5.3 与Init容器配合
    • 6. 监控与调试
      • 6.1 常用命令
      • 6.2 事件监控
    • 7. 最佳实践
    • 8. 实际应用示例
      • 8.1 Nginx配置示例
      • 8.2 多环境配置管理
    • 案例

Kubernetes ConfigMap 详解

ConfigMap 是 Kubernetes 中用于存储非敏感(不加密)配置数据的 API 对象,允许将配置与容器镜像分离,实现配置的灵活管理和动态更新。

1. ConfigMap 基本概念

1.1 核心特性

  • 解耦配置:将应用配置与容器镜像分离
  • 动态更新:支持不重启 Pod 更新配置(部分场景)
  • 多种使用方式:环境变量、命令行参数、配置文件
  • 非敏感数据:不适合存储密码、密钥等敏感信息

1.2 与 Secret 的对比

特性ConfigMapSecret
数据类型普通配置数据敏感数据
存储编码明文(可UTF-8文本)Base64编码
典型用途配置文件、命令行参数密码、令牌、密钥
安全保护无特殊保护额外保护机制
大小限制1MB(etcd限制)1MB

2. ConfigMap 创建方式

2.1 从字面值创建

kubectl create configmap game-config \--from-literal=game.level=4 \--from-literal=game.health=5

2.2 从文件创建

# 从单个文件
kubectl create configmap nginx-config --from-file=nginx.conf# 从目录(所有文件)
kubectl create configmap config-dir --from-file=./configs/# 指定键名
kubectl create configmap special-config --from-file=config=app.properties

2.3 从环境文件创建

kubectl create configmap env-config --from-env-file=env.list

2.4 YAML 定义方式

apiVersion: v1
kind: ConfigMap
metadata:name: game-confignamespace: default
data:# 类属性键game.properties: |enemy.types=aliens,monstersplayer.maximum.level=10# 类文件键ui.properties: |color.good=purplecolor.bad=yellow

3. ConfigMap 使用方式

3.1 作为环境变量

单个环境变量

env:
- name: LOG_LEVELvalueFrom:configMapKeyRef:name: game-configkey: log.level

全部环境变量

envFrom:
- configMapRef:name: game-config

3.2 作为命令行参数

args:- "--loglevel"- "$(LOG_LEVEL)"
env:- name: LOG_LEVELvalueFrom:configMapKeyRef:name: game-configkey: log.level

3.3 作为卷挂载

完整挂载

volumes:
- name: config-volumeconfigMap:name: game-config
volumeMounts:
- name: config-volumemountPath: /etc/config

选择性挂载

volumes:
- name: config-volumeconfigMap:name: game-configitems:- key: game.propertiespath: game/game.properties

3.4 子路径挂载(不自动更新)

volumeMounts:
- name: config-volumemountPath: /etc/game/game.propertiessubPath: game.properties

4. 热更新机制

4.1 自动更新特性

  • 卷挂载的ConfigMap:自动更新(kubelet定期检查,默认1分钟同步周期)
  • 环境变量:不会自动更新,需要重启Pod
  • 子路径挂载:不会自动更新

4.2 更新操作

# 更新ConfigMap
kubectl edit configmap game-config# 触发更新(对卷挂载有效)
kubectl patch configmap game-config -p '{"data":{"game.level":"5"}}'

4.3 更新延迟

  • 更新传播到Pod通常需要1-2分钟(取决于kubelet配置)
  • 可通过观察文件时间戳确认更新:
    kubectl exec <pod-name> -- ls -la /etc/config/
    

5. 高级用法

5.1 不可变ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:name: immutable-config
immutable: true
data:some.key: some.value

优势:

  • 防止意外更改
  • 减少apiserver负载
  • 安全提升(防止热更新攻击)

5.2 大小限制与最佳实践

  • 单ConfigMap限制:1MB(etcd限制)
  • 推荐实践
    • 按功能拆分ConfigMap
    • 同类配置合并
    • 避免超大配置文件

5.3 与Init容器配合

initContainers:
- name: init-configimage: busyboxcommand: ['sh', '-c', 'cp /tmp/config/* /shared-config/']volumeMounts:- name: config-volumemountPath: /tmp/config- name: shared-configmountPath: /shared-config
containers:
- name: appimage: myappvolumeMounts:- name: shared-configmountPath: /etc/app-config

6. 监控与调试

6.1 常用命令

# 查看ConfigMap
kubectl get configmaps
kubectl describe configmap <name># 查看挂载内容
kubectl exec <pod> -- ls /etc/config# 查看环境变量
kubectl exec <pod> -- env | grep CONFIG# 检查更新状态
kubectl get pods -w

6.2 事件监控

kubectl get events --field-selector involvedObject.kind=ConfigMap

7. 最佳实践

  1. 命名规范

    • 使用有意义的名称(如 {app}-{env}-config
    • 包含版本信息(v1, v2)
  2. 组织结构

    configs/
    ├── dev/
    │   ├── app-config.yaml
    │   └── db-config.yaml
    └── prod/├── app-config.yaml└── db-config.yaml
    
  3. 版本控制

    • 将ConfigMap定义纳入版本控制
    • 使用Kustomize或Helm管理不同环境配置
  4. 更新策略

    • 对关键配置使用RollingUpdate
    • 测试环境先验证配置变更
  5. 安全考虑

    • 敏感数据必须使用Secret
    • 限制ConfigMap访问权限(RBAC)

8. 实际应用示例

8.1 Nginx配置示例

# nginx-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: nginx-conf
data:nginx.conf: |user  nginx;worker_processes  auto;events {worker_connections  1024;}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}}}# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:alpineports:- containerPort: 80volumeMounts:- name: nginx-configmountPath: /etc/nginx/nginx.confsubPath: nginx.confvolumes:- name: nginx-configconfigMap:name: nginx-conf

8.2 多环境配置管理

# 目录结构
config/
├── base/
│   ├── configmap.yaml
│   └── kustomization.yaml
├── dev/
│   ├── configmap-patch.yaml
│   └── kustomization.yaml
└── prod/├── configmap-patch.yaml└── kustomization.yaml# 使用Kustomize部署
kubectl apply -k config/dev/

案例

cm.yaml

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: busyboximage: busyboxcommand: [ "/bin/sh","-c","cat /etc/config/redis.properties" ]volumeMounts:- name: config-volumemountPath: /etc/configvolumes:- name: config-volumeconfigMap:name: redis-configrestartPolicy: Never``
myconfig.yaml
```yaml
apiVersion: v1
kind: ConfigMap
metadata:name: myconfignamespace: default
data:special.level: infospecial.type: hello

config-var.yaml

apiVersion: v1
kind: Pod
metadata:name: mypod
spec:containers:- name: busyboximage: busyboxcommand: [ "/bin/sh", "-c", "echo $(LEVEL) $(TYPE)" ]env:- name: LEVELvalueFrom:configMapKeyRef:name: myconfigkey: special.level- name: TYPEvalueFrom:configMapKeyRef:name: myconfigkey: special.typerestartPolicy: Never
http://www.dtcms.com/wzjs/160203.html

相关文章:

  • 手机桂林生活网seo主要优化
  • 杜桥做网站哪家好网推项目
  • 网站核查怎么抽查网游推广员
  • 网站改版模版页面优化的方法
  • 上海市交通城乡建设委员会网站刷网站百度关键词软件
  • 网站改版目的做一个网站需要多少钱大概
  • 做的网站没法本地上传图片营销平台有哪些
  • php动态网站开发实训目的数据分析网页
  • 网站建设与维护书电脑优化是什么意思
  • 茂名公司网站开发石家庄新闻网头条新闻
  • 做网站为什么需要花钱惠州网络营销
  • 深圳市手机网站建设企业新型实体企业100强
  • 忒低网站长怎么做核酸检测最新消息
  • 怎么做网上网站关键词百度网盘
  • 无锡 学校网站建设浙江seo博客
  • 音乐分享网站开发合肥今天的最新消息
  • 做教师章节试题哪个网站百度站长工具怎么关闭
  • 去哪个网站做试用好网站seo搜索
  • 新网站怎么发外链南平网站seo
  • 手机网站 免费建站免费个人网站注册
  • 做淘宝需要知道什么网站网络营销内容
  • 做新闻网站需要什么手续营销外包公司
  • 1.网站建设分为哪几个阶段如何把一个关键词优化到首页
  • 制造业网站建设推广如何做网上引流
  • 东菀高端网站建设金华seo全网营销
  • 人才网站建设今日新闻热点大事件
  • web登录官方入口泰安seo推广
  • 制作一个网站的费用是多少钱seo外链发布
  • 做网站一个月能赚多少钱如何快速搭建网站
  • 今日新闻摘抄50字网站seo查询工具