爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      K8S(六)ConfigMap的使用#yyds干货盘点#

      首页 知识中心 其他 文章详情页

      K8S(六)ConfigMap的使用#yyds干货盘点#

      2023-06-08 06:22:12 阅读次数:472

      K8S

      一、介绍

      ConfigMap是一种API对象,用来将非加密数据保存到键值对中。可以用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap可以将环境变量配置信息和容器镜像解耦,便于应用配置的修改。如果需要存储加密信息时可以使用Secret对象。 configmap的主要作用 就是为了让镜像 和 配置文件解耦,以便实现镜像的可移植性和可复用性,因为一个configMap其实就是一系列配置信息的集合,将来可直接注入到Pod中的容器使用,而注入方式有两种,一种将configMap做为存储卷,一种是将configMap通过env中configMapKeyRef注入到容器中; configMap是KeyValve形式来保存数据的,如: name=zhangsan 或 nginx.conf="http{server{...}}" 对于configMap的Value的长度是没有限制的,所以它可以是一整个配置文件的信息。 configMap: 它是K8s中的标准组件,它通过两种方式实现给Pod传递配置参数:   A. 将环境变量直接定义在configMap中,当Pod启动时,通过env来引用configMap中定义的环境变量。   B. 将一个完整配置文件封装到configMap中,然后通过共享卷的方式挂载到Pod中,实现给应用传参。 secret: 它时一种相对安全的configMap,因为它将configMap通过base64做了编码, 让数据不是明文直接存储在configMap中,起到了一定的保护作用,但对Base64进行反编码,对专业人士来说,没有任何难度,因此它只是相对安全。

      二、ConfigMap创建

      1.通过命令行创建configmap

      可以使用 kubectl create configmap 从文件、目录或者 key-value 字符串创建等创建 ConfigMap

      1.1、通过文件创建configmap

      [root@k8s-master configmap]# echo hello > 1.text
      [root@k8s-master configmap]# echo word > 2.text
      [root@k8s-master configmap]# kubectl create configmap my-config --from-file=key1=1.text  --from-file=key2=2.text
      configmap/my-config created
      [root@k8s-master configmap]# kubectl get configmap
      NAME               DATA   AGE
      kube-root-ca.crt   1      55d
      my-config          2      23s
      [root@k8s-master configmap]# kubectl describe configmap/my-config
      Name:         my-config
      Namespace:    default
      Labels:       <none>
      Annotations:  <none>
      
      Data
      ====
      key1:
      ----
      hello
      
      key2:
      ----
      word
      
      
      BinaryData
      ====
      
      Events:  <none>
      

      K8S(六)ConfigMap的使用#yyds干货盘点#

      看到该configmap中有两个键值对,key1:hello 和 key2:world

      1.2、通过文件夹创建

      [root@k8s-master configmap]# mkdir config
      [root@k8s-master configmap]# echo hello > config/test1
      [root@k8s-master configmap]# echo world > config/test2
      [root@k8s-master configmap]# kubectl create configmap dir-config --from-file=config/
      configmap/dir-config created
      [root@k8s-master configmap]# kubectl get configmap
      NAME               DATA   AGE
      dir-config         2      8s
      kube-root-ca.crt   1      55d
      my-config          2      6m49s
      [root@k8s-master configmap]# kubectl describe configmap/dir-config
      Name:         dir-config
      Namespace:    default
      Labels:       <none>
      Annotations:  <none>
      
      Data
      ====
      test2:
      ----
      world
      
      test1:
      ----
      hello
      
      
      BinaryData
      ====
      
      Events:  <none>
      

      看到该configmap资源中有两个键值对,test1:hello和test2:world,key为文件名,value为文件内容

      1.3、通过键值对创建configmap

      [root@k8s-master configmap]# kubectl create configmap literal-config --from-literal=key1=hello --from-literal=key2=world
      configmap/literal-config created
      [root@k8s-master configmap]# kubectl get configmap
      NAME               DATA   AGE
      dir-config         2      17m
      kube-root-ca.crt   1      55d
      literal-config     2      26s
      my-config          2      24m
      [root@k8s-master configmap]# kubectl describe configmap/literal-config
      Name:         literal-config
      Namespace:    default
      Labels:       <none>
      Annotations:  <none>
      
      Data
      ====
      key1:
      ----
      hello
      key2:
      ----
      world
      
      BinaryData
      ====
      
      Events:  <none>
      

      2、通过yaml进行创建

      [root@k8s-master configmap]# cat config.yaml
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: myconfig
      data:
        key1: hello
        key2: world
      [root@k8s-master configmap]# kubectl apply -f config.yaml
      configmap/myconfig created
      [root@k8s-master configmap]# kubectl describe configmap/myconfig
      Name:         myconfig
      Namespace:    default
      Labels:       <none>
      Annotations:  <none>
      
      Data
      ====
      key1:
      ----
      hello
      key2:
      ----
      world
      
      BinaryData
      ====
      
      Events:  <none>
      

      三、ConfigMap的使用

      Pod的使用方式:

      1. 将ConfigMap中的数据设置为容器的环境变量
      2. 将ConfigMap中的数据设置为命令行参数
      3. 使用Volume将ConfigMap作为文件或目录挂载
      4. 编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap

      1.设置为容器的环境变量

      [root@k8s-master configmap]# cat test-pod-configmap1.yml
      apiVersion: v1
      kind: Pod
      metadata:
       name: test-pod-configmap
      spec:
       containers:
        - name: test-busybox
          image: busybox
          imagePullPolicy: IfNotPresent
          args:
          - sleep
          - "86400"
          env:
          - name: KEY1
            valueFrom:
             configMapKeyRef:
              name: my-config
              key: key1
          - name: KEY2
            valueFrom:
             configMapKeyRef:
              name: my-config
              key: key2
      [root@k8s-master configmap]# kubectl apply -f test-pod-configmap1.yml
      pod/test-pod-configmap created
      [root@k8s-master configmap]# kubectl get pod
      NAME                       READY   STATUS             RESTARTS          AGE
      nfs-pvc-587bdcb574-2ql7m   0/1     Pending            0                 5d19h
      nfs-pvc-587bdcb574-5gq5n   0/1     Pending            0                 5d19h
      nfs-pvc-587bdcb574-892jj   0/1     Pending            0                 5d19h
      secret-pod3                1/1     Running            0                 44h
      secret1-pod                0/1     CrashLoopBackOff   526 (86s ago)     45h
      secret2-pod                0/1     CrashLoopBackOff   523 (2m58s ago)   44h
      test-pod-configmap         1/1     Running            0                 4s
      
      [root@k8s-master configmap]# kubectl exec  -it pod/test-pod-configmap /bin/sh
      kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
      / # printenv
      KEY1=hello
      
      KEY2=word
      

      环境变量里有KEY1=hello,KEY2=world

      2. 设置为命令行参数

      [root@k8s-master configmap]# cat test-pod-configmap-cmd.yml
      apiVersion: v1
      kind: Pod
      metadata:
       name: test-pod-configmap-cmd
      spec:
       containers:
        - name: test-busybox
          image: busybox
          imagePullPolicy: IfNotPresent
          command: [ "/bin/sh","-c","echo $KEY1 $KEY2"]
          env:
          - name: KEY1
            valueFrom:
             configMapKeyRef:
              name: my-config
              key: key1
          - name: KEY2
            valueFrom:
             configMapKeyRef:
              name: my-config
              key: key2
       restartPolicy: Never
      [root@k8s-master configmap]# kubectl apply -f test-pod-configmap-cmd.yml
      pod/test-pod-configmap-cmd created
      [root@k8s-master configmap]# kubectl get pod
      NAME                       READY   STATUS      RESTARTS   AGE
      nfs-pvc-587bdcb574-8zm2m   0/1     Pending     0          11s
      nfs-pvc-587bdcb574-bqcq8   0/1     Pending     0          11s
      nfs-pvc-587bdcb574-ft2f9   0/1     Pending     0          11s
      test-pod-configmap-cmd     0/1     Completed   0          8s
      [root@k8s-master configmap]# kubectl logs pod/test-pod-configmap-cmd
      hello word
      

      3.将configmap挂载到容器中

      [root@k8s-master configmap]# cat test-pod-configmap-volume.yaml
      apiVersion: v1
      kind: Pod
      metadata:
       name: test-pod-projected-configmap-volume
      spec:
       containers:
       - name: test-pod-busybox
         image: busybox
         imagePullPolicy: IfNotPresent
         args:
         - sleep
         - "86400"
         volumeMounts:
         - name: config-volume
           mountPath: "/projected-volume"
           readOnly: true
       volumes:
       - name: config-volume
         projected:
          sources:
          - configMap:
             name: my-config
      [root@k8s-master configmap]# kubectl apply -f test-pod-configmap-volume.yaml
      pod/test-pod-projected-configmap-volume created
      [root@k8s-master configmap]# kubectl get pod
      NAME                                  READY   STATUS      RESTARTS   AGE
      nfs-pvc-587bdcb574-8zm2m              0/1     Pending     0          6m17s
      nfs-pvc-587bdcb574-bqcq8              0/1     Pending     0          6m17s
      nfs-pvc-587bdcb574-ft2f9              0/1     Pending     0          6m17s
      test-pod-configmap-cmd                0/1     Completed   0          6m14s
      test-pod-projected-configmap-volume   1/1     Running     0          4s
      ####进入容器查看下
      [root@k8s-master configmap]# kubectl exec -it test-pod-projected-configmap-volume -- /bin/sh
      / # ls
      bin               etc               proc              root              tmp               var
      dev               home              projected-volume  sys               usr
      / # cd projected-volume/
      /projected-volume # ll
      /bin/sh: ll: not found
      /projected-volume # ls
      key1  key2
      /projected-volume # cat key2
      word
      /projected-volume # cat key1
      hello
      

      通过Volume挂载到容器内部时,当该configmap的值发生变化时,容器内部具备自动更新的能力,但是通过环境变量设置到容器内部该值不具备自动更新的能力。

      注意: 段落引用ConfigMap必须在Pod使用它之前创建 段落引用使用envFrom时,将会自动忽略无效的键 段落引用Pod只能使用同一个命名空间的ConfigMap

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/liqingbiao/4808935,作者:lqbyz,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:K8S的资源和工作模式

      下一篇:记一次K8s排错实战

      相关文章

      2024-12-23 09:17:51

      深入探索Kubernetes的ConfigMap与Secret管理艺术

      在云原生架构的深入学习旅程中,第35天我们踏入了Kubernetes配置管理的核心领域,聚焦于ConfigMap与Secret这两种关键资源,探索它们如何优雅地管理应用配置与敏感信息,为云原生应用的部署、运行与维护提供坚实支撑。

      2024-12-23 09:17:51
      Kubernetes , Secret , 存储 , 应用
      2024-12-13 06:53:51

      【Kubernets】配置类型资源 Etcd, Secret, ConfigMap

      Kubernetes中的etcd是一个高度可用的分布式键值存储系统,它在Kubernetes集群中扮演着至关重要的角色。

      2024-12-13 06:53:51
      etcd , Kubernetes , Pod , Secret , 存储 , 键值
      2024-06-04 08:25:23

      K8S之 metrics-server 组件(十八)

      metrics-server 是一个集群范围内的资源数据集和工具,同样的,metrics-server 也只是显示数据,并不提供数据存储服务,主要关注的是资源度量 API 的实现,比如 CPU、文件描述符、内存、请求延时等指标,metric-server 收集数据给 k8s 集群内使用,如 kubectl,hpa,scheduler 等 。

      2024-06-04 08:25:23
      K8S , kubectl
      2024-05-28 09:35:45

      K8S系列(八)持久化存储(Pod Volumes,PV和PVC)

      K8S系列(八)持久化存储(Pod Volumes,PV和PVC)

      2024-05-28 09:35:45
      docker , K8S , kubernetes
      2024-05-24 07:47:12

      K8S系列(四)Deployment 详解

      如果我们直接管理集群中所有的 Pod,应用 A、B、C 的 Pod,其实是散乱地分布在集群中。

      2024-05-24 07:47:12
      Deployment , K8S
      2023-07-05 06:00:34

      K8S(十二)RBAC

      K8S(十二)RBAC

      2023-07-05 06:00:34
      K8S
      2023-07-05 06:00:14

      K8S通过NFS实现共享存储

      K8S通过NFS实现共享存储

      2023-07-05 06:00:14
      K8S , NFS
      2023-07-03 09:13:30

      K8S使用rook安装ceph报错application not enabled on 1 pool(s)

      K8S使用rook安装ceph报错application not enabled on 1 pool(s)

      2023-07-03 09:13:30
      ceph , K8S
      2023-06-30 08:13:42

      云原生入门之K8S工作节点部署

      主节点配置传送门:在我们配置好主master节点之后,依旧参考我们另一篇文章中的,当我们的master节点部署好的时候出现的代码块中的代码。 具体配置代码如下:再上图的第26-27行。​​需要注意的是,这段加入代码只有在master节点配置

      2023-06-30 08:13:42
      K8S , 云原生
      2023-06-15 06:24:05

      K8S(八)Namespace命名空间#yyds干货盘点#

      (一)、Namespace概述你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离。 他们可以为您和您的团队提供组织,安全甚至性能方面的帮助!大

      2023-06-15 06:24:05
      K8S
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5236795

      查看更多

      最新文章

      K8S之 metrics-server 组件(十八)

      2024-06-04 08:25:23

      K8S系列(四)Deployment 详解

      2024-05-24 07:47:12

      K8S(十二)RBAC

      2023-07-05 06:00:34

      K8S使用rook安装ceph报错application not enabled on 1 pool(s)

      2023-07-03 09:13:30

      K8S(八)Namespace命名空间#yyds干货盘点#

      2023-06-15 06:24:05

      K8S的资源和工作模式

      2023-06-08 06:22:12

      查看更多

      热门文章

      K8S关于pod资源监控

      2023-05-30 08:03:31

      K8S核心技术PV和PVC状态的变化#yyds干货盘点#

      2023-06-01 06:40:37

      K8S的资源和工作模式

      2023-06-08 06:22:12

      K8S 扩展之 事件监听器

      2023-05-30 08:24:51

      K8S(二)Controller-Manager#yyds干货盘点#

      2023-05-30 08:03:31

      K8S-Statefulset控制器

      2023-05-30 08:05:00

      查看更多

      热门标签

      linux java python javascript 数组 前端 docker Linux vue 函数 shell git 节点 容器 示例
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      K8S(七)Secret的使用#yyds干货盘点#

      K8S(二)Controller-Manager#yyds干货盘点#

      K8S使用rook安装ceph报错application not enabled on 1 pool(s)

      K8S关于pod资源监控

      K8S系列(四)Deployment 详解

      K8S-Statefulset控制器

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号