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

K8s ConfigMap实战全解析

ConfigMap祥解ConfigMap与 Secret 类似用来存储配置文件的kubernetes资源对象所有的配置内容都存储在etcd中。与 Secret 的区别ConfigMap 保存的是不需要加密的、应用所需的配置信息。 ConfigMap 的用法几乎与 Secret 完全相同可以使用 kubectl create configmap 从文件或者目录创建 ConfigMap也可以直接编写 ConfigMap 对象的 YAML 文件。创建ConfigMap创建ConfigMap的方式有4种 命令行方式 方式1通过直接在命令行中指定configmap参数创建即--from-literal 方式2通过指定文件创建即将一个配置文件创建为一个ConfigMap--from-file文件方式3通过指定目录创建即将一个目录下的所有配置文件创建为一个ConfigMap--from-file目录配置文件方式 方式4事先写好标准的configmap的yaml文件然后kubectl create-f创建实战一1.1 通过命令行参数–from-literal创建创建命令[rootkub-k8s-master prome]# kubectl create configmap test-configmap --from-literaluseradmin --from-literalpass1122334configmap/test-configmap created结果如下面的data内容所示[rootkub-k8s-master prome]# kubectl get configmap test-configmap -o yamlapiVersion: v1 data: pass:1122334user: admin kind: ConfigMap metadata: creationTimestamp:2019-10-21T07:48:15Zname: test-configmap namespace: default resourceVersion:187590selfLink: /api/v1/namespaces/default/configmaps/test-configmap uid: 62a8a0d0-fab9-4159-86f4-a06aa213f4b11.2 通过指定文件创建编辑文件server.conf内容如下[rootkub-k8s-master prome]# vim server.confserver{listen80;server_name localhost;location /{root /var/www/html;index index.html index.htm;}}创建可以有多个–from-file[rootkub-k8s-master prome]# kubectl create configmap test-config2 --from-fileserver.confconfigmap/test-config2 created结果如下面data内容所示[rootkub-k8s-master prome]# kubectl get configmap test-config2 -o yamlapiVersion: v1 data: server.conf:|server{listen80;server_name localhost;localtion /{root /var/www/html;index index.html index.htm;}}kind: ConfigMap metadata: creationTimestamp:2019-10-21T08:01:43Zname: test-config2 namespace: default resourceVersion:188765selfLink: /api/v1/namespaces/default/configmaps/test-config2 uid: 790fca12-3900-4bf3-a017-5af1070792e5通过指定文件创建时configmap会创建一个key/value对key是文件名value是文件内容。1.3 指定目录创建configs 目录下的config-1和config-2内容如下所示[rootkub-k8s-master prome]# mkdir config[rootkub-k8s-master prome]# cd config/[rootkub-k8s-master config]# vim config1aaa bbbcd[rootkub-k8s-master config]# vim config2eee fffhk创建[rootkub-k8s-master config]# cd ..[rootkub-k8s-master prome]# kubectl create configmap test-config3 --from-file./configconfigmap/test-config3 created结果下面data内容所示[rootkub-k8s-master prome]# kubectl get configmap test-config3 -o yamlapiVersion: v1 data: config1:|aaa bbbcd config2:|eee fffhk kind: ConfigMap metadata: creationTimestamp:2019-10-21T08:20:42Zname: test-config3 namespace: default resourceVersion:190420selfLink: /api/v1/namespaces/default/configmaps/test-config3 uid: 6e00fded-80a8-4297-aeb3-4c48795e6eb9指定目录创建时configmap内容中的各个文件会创建一个key/value对key是文件名value是文件内容。1.4 通过事先写好configmap的标准yaml文件创建yaml文件内容如下 注意其中一个key的value有多行内容时的写法[rootkub-k8s-master prome]# vim configmap.yaml--- apiVersion: v1 kind: ConfigMap metadata: name: test-config4 namespace: default data: cache_host: memcached-gcxt cache_port:11211cache_prefix: gcxt my.cnf:|[mysqld]log-binmysql-bin hahahehe创建[rootkub-k8s-master prome]# kubectl apply -f configmap.yamlconfigmap/test-config4 created结果如下面data内容所示[rootkub-k8s-master prome]# kubectl get configmap test-config4 -o yamlapiVersion: v1 data: cache_host: memcached-gcxt cache_port:11211cache_prefix: gcxt my.cnf:|[mysqld]log-binmysql-bin hahahehe kind: ConfigMap metadata: annotations: kubectl.kubernetes.io/last-applied-configuration:|{apiVersion:v1,data:{cache_host:memcached-gcxt,cache_port:11211,cache_prefix:gcxt,my.cnf:[mysqld]\nlog-bin mysql-bin\nhaha hehe\n},kind:ConfigMap,metadata:{annotations:{},name:test-config4,namespace:default}}creationTimestamp:2019-10-21T08:30:24Zname: test-config4 namespace: default resourceVersion:191270selfLink: /api/v1/namespaces/default/configmaps/test-config4 uid: 2a8cd6e7-db2c-4781-b005-e0b76d26394b查看configmap的详细信息# kubectl describe configmap使用ConfigMap使用ConfigMap的方式一种是通过环境变量的方式直接传递pod另一种是使用volume的方式挂载入到pod内示例ConfigMap文件[rootkub-k8s-master prome]# vim config-map.yml--- apiVersion: v1 kind: ConfigMap metadata: name: config-map namespace: default data: special.how: very special.type: charm 创建[rootkub-k8s-master prome]# kubectl apply -f config-map.ymlconfigmap/config-map created2.1 通过变量使用(1) 使用valueFrom、configMapKeyRef、name、key指定要用的key:1.设置指定变量的方式[rootkub-k8s-master prome]# vim testpod.yml--- apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: daocloud.io/library/nginx env:#专门在容器里面设置变量的关键字- name: SPECIAL_LEVEL_KEY#这里的-name,是容器里设置的新变量的名字valueFrom: configMapKeyRef: name: config-map#这里是来源于哪个configMapkey: special.how#configMap里的key- name: SPECIAL_TYPE_KEY valueFrom: configMapKeyRef: name: config-map key: special.type 创建pod[rootkub-k8s-master prome]# kubectl apply -f testpod.ymlpod/dapi-test-pod created测试[rootkub-k8s-master prome]# kubectl exec -it dapi-test-pod /bin/bashrootdapi-test-pod:/# echo $SPECIAL_TYPE_KEYcharm(2) 通过envFrom、configMapRef、name使得configmap中的所有key/value对儿 都自动变成环境变量[rootkub-k8s-master prome]# kubectl delete -f testpod.ymlpoddapi-test-poddeleted[rootkub-k8s-master prome]# cp testpod.yml testpod.yml.bak[rootkub-k8s-master prome]# vim testpod.yml--- apiVersion: v1 kind: Pod metadata: name: dapi-test-pod spec: containers: - name: test-container image: daocloud.io/library/nginx envFrom: - configMapRef: name: config-map这样容器里的变量名称直接使用configMap里的key名[rootkub-k8s-master prome]# kubectl apply -f testpod.ymlpod/dapi-test-pod created.[rootkub-k8s-master prome]# kubectl exec -it dapi-test-pod /bin/bashrootdapi-test-pod:/# envHOSTNAMEdapi-test-podNJS_VERSION0.3.3NGINX_VERSION1.17.1KUBERNETES_PORT_443_TCP_PROTOtcpKUBERNETES_PORT_443_TCP_ADDR10.96.0.1PKG_RELEASE1~stretchKUBERNETES_PORTtcp://10.96.0.1:443PWD/special.howveryHOME/rootKUBERNETES_SERVICE_PORT_HTTPS443KUBERNETES_PORT_443_TCP_PORT443KUBERNETES_PORT_443_TCPtcp://10.96.0.1:443TERMxtermSHLVL1KUBERNETES_SERVICE_PORT443PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binspecial.typecharmKUBERNETES_SERVICE_HOST10.96.0.1_/usr/bin/env2.2 作为volume挂载使用(1) 把1.4中test-config4所有key/value挂载进来[rootkub-k8s-master prome]# kubectl delete -f testpod.ymlpoddapi-test-poddeleted[rootkub-k8s-master prome]# vim volupod.yml--- apiVersion: v1 kind: Pod metadata: name: nginx-configmap spec: containers: - name: nginx-configmap image: daocloud.io/library/nginx volumeMounts: - name: config-volume4 mountPath:/tmp/config4volumes: - name: config-volume4 configMap: name: test-config4 创建pod[rootkub-k8s-master prome]# kubectl apply -f volupod.ymlpod/nginx-configmap created进入容器中/tmp/config4查看[rootkub-k8s-master prome]# kubectl exec -it nginx-configmap /bin/bashrootnginx-configmap:/# ls /tmp/config4/cache_host cache_port cache_prefix my.cnf rootnginx-configmap:/# cat /tmp/config4/cache_hostmemcached-gcxt rootnginx-configmap:/#可以看到在config4文件夹下以每一个key为文件名,value为内容,创建了多个文件。实战一创建configmap[rootkub-k8s-master configmap]# vim configmap.yaml--- apiVersion: v1 kind: ConfigMap metadata: name: nginx-server-conf namespace: default data: index.html:|Hello, cloud computing Hello, Mr. Wang[rootkub-k8s-master configmap]# kubectl get configmapNAME DATA AGE nginx-server-conf27s[rootkub-k8s-master configmap]# kubectl get configmap nginx-server-conf -o yaml使用configmap[rootkub-k8s-master configmap]# vim pod.yaml--- apiVersion: v1 kind: Pod metadata: name: test-webapp spec: containers: - name: nginx-app image: daocloud.io/library/nginx ports: - containerPort:80volumeMounts: - name: nginx-volume mountPath:/usr/share/nginx/htmlvolumes: - name: nginx-volume configMap: name: nginx-server-conf[rootkub-k8s-master configmap]# kubectl apply -f pod.yaml[rootkub-k8s-master configmap]# kubectl get podNAME READY STATUS RESTARTS AGE test-webapp1/1 Running06s[rootkub-k8s-master configmap]# kubectl exec -it test-webapp /bin/bashroottest-webapp:/# cd /usr/share/nginx/html/roottest-webapp:/usr/share/nginx/html# lsindex.html roottest-webapp:/usr/share/nginx/html# cat index.htmlHello, cloud computing Hello, Mr. Wang[rootkub-k8s-master configmap]# curl 10.244.2.25Hello, cloud computing Hello, Mr. Wang

相关文章:

K8s ConfigMap实战全解析

ConfigMap祥解 ConfigMap与 Secret 类似,用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中。与 Secret 的区别: ConfigMap 保存的是不需要加密的、应用所需的配置信息。ConfigMap 的用法几乎与 Secret 完全相同&#xff1…...

你知道ZooKeeper分布式锁怎么应用吗?【原理与实现深度解析】

目录 一、前言 二、核心实现原理 1. 创建节点 2. 获取子节点列表 3. 判断是否获取锁 4. 监听前序节点 5. 等待与重试 三、锁的类型与实现变体 排他锁(Exclusive Lock) 共享锁(Shared Lock) 可重入锁(Reentr…...

收藏!程序员转型AI必看:手把手教你构建百万级文档RAG系统

本文聚焦于企业级大模型应用中的RAG技术,针对10万级文档规模,探讨了如何构建一个高效、稳定且可扩展的RAG系统。文章从RAG的基本原理出发,分析了检索慢、召回率低和部署复杂三大痛点,并提出了相应的优化策略,包括文档预…...

零基础玩转fft npainting lama:5分钟上手AI图片修复,轻松去除水印杂物

零基础玩转fft npainting lama:5分钟上手AI图片修复,轻松去除水印杂物 1. 快速了解fft npainting lama fft npainting lama是一款基于LaMa(Large Mask Inpainting)架构的AI图像修复工具,经过二次开发构建&#xff0c…...

RMBG-2.0与LangChain结合:智能图片处理工作流设计

RMBG-2.0与LangChain结合:智能图片处理工作流设计 1. 引言:当抠图遇上智能编排 想象一下这样的场景:你手头有几百张产品图片需要处理,有的要抠图换背景,有的要智能分类,还有的需要根据内容自动生成描述。…...

您知道什么是AspectJ吗?【Java AOP的静态编织引擎】

目录 前言 核心洞察 核心概念与运行机制 1. 连接点 (Join Point) 2. 切入点 (Pointcut) 3. 通知 (Advice) 4. 切面 (Aspect) 三种编织方式 1. 编译时编织 (Compile-time Weaving) 2. 编译后编织 (Post-compile Weaving) 3. 加载时编织 (Load-time Weaving, LTW) Sp…...

《QGIS快速入门与应用基础》268:国土行业标准布局模板

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

书匠策AI:论文写作界的“智能导航仪”,让课程论文创作如行云流水!

在学术的征途中,每一篇课程论文都是一次智慧的探险,既充满挑战也孕育着成长的喜悦。然而,面对浩瀚的知识海洋和复杂的写作规范,许多学子常常感到力不从心,甚至迷失方向。别怕,今天我要为你揭秘一位论文写作…...

信捷PLC控制 台达伺服电机实现手动自动与循环控制

信捷XD/XC系列PLC 控制台达B2系列伺服电机程序,手动自动,循环,循环次数设定在自动化控制领域,信捷PLC与台达伺服电机的搭配应用十分广泛。今天咱们就来聊聊如何用信捷XD/XC系列PLC控制台达B2系列伺服电机,实现手动、自…...

揭秘书匠策AI:课程论文写作的“智慧魔法棒”

在学术的奇妙旅程中,课程论文宛如一座座等待攀登的小山峰,既充满挑战,又蕴含着成长的机遇。对于众多初涉学术领域的学生而言,从构思选题到搭建框架,再到填充内容与精心打磨,每一步都可能伴随着困惑与迷茫。…...

WPF新手村教程(七)—— 终章(MVVM架构初见杀)陶

1. 哑铃图是什么? 哑铃图(Dumbbell Plot),有时也称为DNA图或杠铃图,是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中,我们通常使用两条折…...

物联网入门:从会动的小灯泡起步,普通人轻松上手,一篇文章快速入门

物联网开发入门指南:从零开始,手把手带你玩转物联网 一、物联网专业到底学些啥? 物联网专业听起来高大上,其实说白了,就是教你如何把身边的各种“东西”连上网,让它们能“说话”、能“听话”、能“思考”…...

IM010-批量去除图片多余信息-为图片瘦身

批量为图片瘦身,减小图片大小 A文件夹下有P、K、M、H....等文件夹,每个文件夹下都有图片,将程序放在A文件夹下,运行程序后,会自动为每个文件夹下图片进行瘦身减小文件大小。 程序截图 ImageMagick安装方式 先在电脑D盘…...

HagiCode Desktop 混合分发架构解析:如何用 PP 加速大文件下载雷

一、Actor 模型:不是并发技巧,而是领域单元 Actor 模型的本质是: Actor 是独立运行的实体 Actor 之间只通过消息交互 Actor 内部状态不可被外部直接访问 Actor 自行决定如何处理收到的消息 Actor 模型真正解决的是: 如何在不共享状…...

Resource Override:掌控网站资源的终极浏览器插件

Resource Override:掌控网站资源的终极浏览器插件 【免费下载链接】ResourceOverride An extension to help you gain full control of any website by redirecting traffic, replacing, editing, or inserting new content. 项目地址: https://gitcode.com/gh_mi…...

BongoCat桌宠自定义开发全面解析:从设计到社区贡献的实战指南

BongoCat桌宠自定义开发全面解析:从设计到社区贡献的实战指南 【免费下载链接】BongoCat 🐱 跨平台互动桌宠 BongoCat,为桌面增添乐趣! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 开源项目设计理念与架构解…...

国民技术N32G45x定时器:从时钟树到精准周期计算的实践解析

1. 国民技术N32G45x定时器入门指南 第一次接触N32G45x系列MCU的定时器功能时,我也被各种时钟配置搞得晕头转向。后来在实际项目中反复调试才发现,只要掌握几个关键点,定时器的使用其实并不复杂。N32G45x作为国民技术推出的高性能MCU&#xff…...

[AI/Agent/社交] AI Agent社交网络产品:MoltBook => InStreet缴

一、Actor 模型:不是并发技巧,而是领域单元 Actor 模型的本质是: Actor 是独立运行的实体 Actor 之间只通过消息交互 Actor 内部状态不可被外部直接访问 Actor 自行决定如何处理收到的消息 Actor 模型真正解决的是: 如何在不共享状…...

把 Flask 搬进 ESP,高中生自研嵌入式 Web 框架 MicroFlask !唤

如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

隐写术工具技术指南:从原理到实践的完整探索

隐写术工具技术指南:从原理到实践的完整探索 【免费下载链接】openstego OpenStego is a steganography application that provides two functionalities: a) Data Hiding: It can hide any data within an image file. b) Watermarking: Watermarking image files …...

Product Hunt 每日热榜 | 2026-04-09

1. Velo 标语:将任何内容分享为视频消息。 介绍:Velo 利用人工智能将你的原始屏幕录制转化为值得一看的、随时可以分享的视频。 产品网站: 立即访问 Product Hunt: View on Product Hunt 关键词:Velo, 视频消息, A…...

AI写文+自动发布实现方法,自媒体矩阵新玩法

不少自媒体运营者在内容产出上常常面临时间紧、任务重的问题。每天要构思选题、撰写文案、排版配图、多平台分发,流程繁琐且重复性高。于是,有人尝试将AI写作与自动发布结合起来,看看是否真能提升效率。我们也在实际操作中验证了这一组合的效…...

【2026开年巨献】精通Python十讲:第十讲 - 设计模式、架构与工程化思维

【2026开年巨献】精通Python十讲:第十讲 - 设计模式、架构与工程化思维作者:培风图南以星河揽胜 声明:原创不易,转载请注明出处。 互动:如果本文对你有帮助,请不吝 点赞、收藏、关注!你的支持是…...

2.4 复现案例:在A股复现一个经典价值因子(代码+数据)

2.4 复现案例:在A股复现一个经典价值因子(代码数据) 为了完成本章节的编写,花钱买了数据权限,并对代码做了多次优化,所有代码都已经过测试。与各位同学分享,预祝有意做量化的同学,账…...

速成正果经

慈于一切众生,恭敬一切众生,以所有世界永远无苦为方向,以顺一切众生的愿为方向,以增一切众生的慧为方向,以增一切众生的智为方向,以健一切众生的体为方向,以促进一切众生内心舒畅为方向&#xf…...

【初阶数据结构】连续空间的秩序之舞: 顺序表

深入浅出顺序表 📖 点击展开/收起 文章目录 文章目录深入浅出顺序表*1.1 顺序表的定义**1.2 顺序表的初始化与销毁**1.3 顺序表核心讲解之增删改查**二.顺序表的特点**三.经典例题实践顺序表*1.删除顺序表中与val值相同的数并返回删除后的数组长度2.链接连个有序数组…...

免费使用云服务器训练深度学习模型

目前应该有很多课程设计或者毕业设计都是关于深度学习的,如果电脑上没有GPU的话训练一个模型需要很长时间,但是目前可以从很多云服务器上免费额度进行训练(新用户),这里记录一下使用腾讯云免费进行模型训练的流程&…...

第十四届蓝桥杯省赛C/C++ 大学 B 组 第五题 接龙数列

本题是一个比较基础的线性dp的题目。关于题目中所给的N个整数A1,A2.....AN,我们可以通过输入字符串的方式得到第一个值a和某尾的值b,对于以值b结尾的整数序列的最大值,我们只需用以值a结尾的整数序列最大值1即可。最后遍历结尾的可…...

【AI CTO视角】算力不是堆资源,而是一场精细化工程

经常和行业内的朋友交流,发现一个普遍现象:一提到AI算力建设,很多人的第一反应还是堆卡、扩集群、上规模,仿佛GPU数量上去了,算力竞争力自然就来了。 但从实际落地与商业化视角看,尤其在大模型规模化服务、…...

突破单车智能瓶颈:DAIR-V2X车路协同系统全栈实践指南

突破单车智能瓶颈:DAIR-V2X车路协同系统全栈实践指南 【免费下载链接】DAIR-V2X 项目地址: https://gitcode.com/gh_mirrors/da/DAIR-V2X 在自动驾驶技术的发展历程中,单车智能正面临难以逾越的感知边界。当车辆行驶至复杂路口或遭遇恶劣天气时&…...