k8s概念-ConfigMap
回到目录
一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。
1 创建ConfigMap
#使用 kubectl create configmap -h 查看示例,构建 configmap 对象
Examples:# Create a new config map named my-config based on folder barkubectl create configmap my-config --from-file=path/to/bar# Create a new config map named my-config with specified keys instead of file basenames on diskkubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt# Create a new config map named my-config with key1=config1 and key2=config2kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2# Create a new config map named my-config from the key=value pairs in the filekubectl create configmap my-config --from-file=path/to/bar# Create a new config map named my-config from an env filekubectl create configmap my-config --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
1.1 将指定目录下所有文件加载到配置文件中
# Create a new config map named my-config based on folder bar
# kubectl create configmap my-config --from-file=path/to/bar
#example:
#在test目录下有两个配置文件db.properties redis.properties#1.创建configmap,名字为test-cm,从test目录下加载
[root@k8s-master1 configmap]# kubectl create cm test-cm --from-file=test/
configmap/test-cm created#2.查看configmap
[root@k8s-master1 configmap]# kubectl get cm
NAME DATA AGE
kube-root-ca.crt 1 5d9h #k8s默认的认证
test-cm 2 7s #我们创建的#3.查看test-cm的详细信息
[root@k8s-master1 configmap]# kubectl describe cm test-cm
#内容如下:
Name: test-cm
Namespace: default
Labels: <none>
Annotations: <none>Data
====
db.properties: #key
----
username: root
password: 1234redis.properties:
----
port: 6379BinaryData
====Events: <none>
1.2 指定一个或多个文件和key
# Create a new config map named my-config with specified keys instead of file basenames on disk
# kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt#指定一个或多个文件,不加key时以文件名作为key#example:#创建configmap,名称为testfile-cm,从指定的test目录下的db.properties加载
[root@k8s-master1 configmap]# kubectl create cm testfile-cm --from-file=test/db.properties
configmap/testfile-cm created#查看configmap
[root@k8s-master1 configmap]# kubectl get cm
NAME DATA AGE
kube-root-ca.crt 1 5d10h
testfile-cm 1 5s#查看详情
[root@k8s-master1 configmap]# kubectl describe cm testfile-cm
Name: testfile-cm
Namespace: default
Labels: <none>
Annotations: <none>Data
====
db.properties: #不指定key,以文件名为key,如果指定则以具体指定作为key
----
username: root
password: 1234BinaryData
====Events: <none>
1.3 命令上手动添加key-value
# Create a new config map named my-config with key1=config1 and key2=config2
#kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2#直接写入key和value#example:#创建configmap,名称为test-cm,手动添加key:user,value:root;key:password,value:1234
[root@k8s-master1 configmap]# kubectl create cm test-cm --from-literal=user=root --from-literal=password=1234
configmap/test-cm created
[root@k8s-master1 configmap]# kubectl get cm
NAME DATA AGE
kube-root-ca.crt 1 5d10h
test-cm 2 7s
[root@k8s-master1 configmap]# kubectl describe cm test-cm
Name: test-cm
Namespace: default
Labels: <none>
Annotations: <none>Data
====
password: #key
----
1234 #value
user: #key
----
root #valueBinaryData
====Events: <none>
2 configmap的使用
在pod中
将configmap中的数据设置为容器的环境变量
将ConfigMap中的数据设置为命令行参数
使用Volume将ConfigMap作为文件或目录挂载
编写代码在 Pod 中运行,使用 Kubernetes API 来读取 ConfigMap
将configmap挂载到容器中,configmap变化,容器自动更新
而 写入环境变量不会自动更新
2.1 配置到容器的环境变量中
# test-pod-configmap.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod-configmap
spec:containers:- name: test-busyboximage: busyboximagePullPolicy: IfNotPresentargs:- sleep- "86400"env: # env,配置容器环境变量- name: KEY1 # 容器环境变量key为key1valueFrom: # value内容configMapKeyRef: # 通过configmap的key映射name: my-config # configmap的名称key: key1 # configmap中的key- name: KEY2valueFrom:configMapKeyRef:name: my-configkey: key2
2.2 设置为命令行参数
# test-pod-configmap-cmd
apiVersion: v1
kind: Pod
metadata:name: test-pod-configmap-cmd
spec:containers:- name: test-busyboximage: busyboximagePullPolicy: IfNotPresentcommand: [ "/bin/sh","-c","echo $(KEY1) $(KEY2)"]env:- name: KEY1valueFrom:configMapKeyRef:name: my-configkey: key1- name: KEY2valueFrom:configMapKeyRef:name: my-configkey: key2restartPolicy: Never
2.3 将configmap挂载到容器中
# test-pod-projected-configmap-volume.yaml
apiVersion: v1
kind: Pod
metadata:name: test-pod-projected-configmap-volume
spec:containers:- name: test-pod-busyboximage: busyboximagePullPolicy: IfNotPresentargs:- sleep- "86400"volumeMounts: # 挂载- name: config-volume # 挂载的数据卷名mountPath: "/projected-volume" # 挂载到哪的路径readOnly: true # 只读权限volumes: # 数据卷- name: config-volume # 数据卷名称projected:sources:- configMap: # 数据卷为configmapname: my-config # 数据卷名
相关文章:
k8s概念-ConfigMap
回到目录 一般用于去存储 Pod 中应用所需的一些配置信息,或者环境变量,将配置于 Pod 分开,避免应为修改配置导致还需要重新构建 镜像与容器。 1 创建ConfigMap #使用 kubectl create configmap -h 查看示例,构建 configmap 对象…...

Mybatis 实体类属性名和表中字段名不一致怎么处理
一. 前言 最近耀哥有学生出去面试,被问到 “Mybatis实体类的属性名和表中的字段名不一致该怎么处理?”,这其实是一个很经典的面试题,接下来耀哥就为大家详细解析一下这道面试题。 二. 分析 2.1 实体类和字段名不一致所带来的后果…...
CAS - 从AtomicInteger窥探CAS
Unsafe类是CAS的核心,由于Java方法无法直接访问底层,需要通过本地方法(native)来实现,Unsafe类相当于一个桥梁。基于Unsafe类,可以直接操作特定的内存数据。 我们从上一篇说CAS基本原理的时候,有说到一个“资源”被100…...

micro-ros IMU ML 代码
示例代码: #include <micro_ros_arduino.h>#include "LSM6DSOXSensor.h" #include "lsm6dsox_activity_recognition_for_mobile.h"#include <stdio.h> #include <rcl/rcl.h> #include <rcl/error_handling.h> #inclu…...

二十三种设计模式第二十四篇--访问者模式(完结撒花)
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。 通过这种方式,元素的执行算法可以随着访问者改变而改变。 这种类型的设计模式属于行为型模式。根据模式,元素对象已接…...

月报总结|Moonbeam 7月份大事一览
炎炎夏日,Moonbeam于越南举办了线下交流会,在EthCC 2023和以太坊社区成员共同讨论多链应用,在Polkadot Decoded中分享了Moonbeam的与众不同之处。 Bear Necessities Hackathon也于本月圆满结束,选出了每个赛道最杰出的项目&#…...

【2023.8】docker一键部署wvp-GB28181-pro和ZLMediaKit过程全记录
安装docker 使用的操作系统是ubuntu20.04 如何在 Ubuntu 20.04 上安装和使用 Docker https://developer.aliyun.com/article/762674 docker拉取配置好的ZLMediaKIt和wvp-GB28181-pro docker pull 648540858/wvp_pro第一次运行 docker一键运行ZLMediaKIt和wvp-GB28181-pro …...
【2023】字节跳动 10 日心动计划——第四关
目录 1. 买卖股票的最佳时机2. 打家劫舍 II 1. 买卖股票的最佳时机 🔗 原题链接:121. 买卖股票的最佳时机 假设在第 i i i 天卖出股票可获得最大利润,那么买入股票必然是在前 i − 1 i-1 i−1 天中的某一天。更进一步,买入股票应…...

数据库与数据仓库的区别及关系
数据库与数据仓库的区别及关系 数据库数据仓库异同差异联系例子 数据库 数据库是结构化信息或数据的有序集合,一般以电子形式存储在计算机系统中。通常由数据库管理系统 (DBMS) 来控制。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集…...

Emacs之设置行号前景颜色(字体颜色)/背景颜色/光标颜色/背景透明度(一百二十七)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
【hive经典指标,离线数仓指标,ADS层指标分析】最近7日内连续3日下单用户数
1.建表语句 DROP TABLE IF EXISTS ads_order_continuously_user_count; CREATE EXTERNAL TABLE ads_order_continuously_user_count (dt STRING COMMENT 统计日期,recent_days BIGINT COMMENT 最近天数,7:最近7天,order_continu…...

线上java程序CPU及内存占用过高问题排查总结
背景 最近发现线上的一个JAVA程序总是过段时间慢慢卡死,最后导致无法提供服务,外部请求接口超时。 经排查发现,该程序CPU及内存占用都很高,导致整个系统负载很高。 到这里,就想到了对程序内存进行分析。排查过程 查询…...

c高级:day3
作业: 1. 整理思维导图 2.判断家目录下,普通文件的个数和目录文件的个数 #!/bin/bash ######################################################################## # File Name: zy1.sh # Created Time: 2023年08月04日 星期五 19时13分08秒 ##############################…...
Java检查值是否存在于数组中的3种方法
在 Java 中,有许多方法可以检查此数组中是否存在特定元素。 1)使用线性搜索方法 时间复杂度:O(N) 辅助空间:O(1) for (int element : arr) { if (element toCheckValue) { return true; } } 示例代码: import java.ut…...

python 连接oracle pandas以简化excel的编写和数据操作
python代码 Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: liukai 2810248865qq.com LastEditTime: 2023-07-06 22:12:56 FilePath: \PythonProject02\pandas以简化excel的编写和数据操作.py Description: 这是默认设置,请设置customMade, 打开koro…...

Kubernetes高可用集群二进制部署(三)部署api-server
Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署…...
【网络|TCP】三次握手、四次握手
TCP是一种面向连接的可靠的传输协议,建立和断开TCP连接时需要进行握手的过程。其中,TCP的连接建立需要进行三次握手,而连接断开则需要进行四次握手。 解释 三次握手 第一次握手:客户端发送一个SYN(同步)报…...

刷题笔记 day7
力扣 209 长度最小的子数组 解法:滑动指针(对同向双指针区间内的数据处理) 1)先初始化 两个指针 left ,right。 2)右移指针right的同时使用sum记录指针right处的值,并判断sum的值是否满足要求&…...

Tuxera NTFS2023Mac强大的Mac读写工具
Mac用户在使用NTFS格式移动硬盘时,会遇到无法写入硬盘的情况。要想解决无法写入的问题,很多人选择使用Mac读写软件。面对市面上“众多”的读写硬盘软件,用户应该怎么选择呢?初次接触移动硬盘的伙伴可能不知道移动硬盘怎么和电脑连…...
ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习
文章目录 ARM 汇编宏介绍ARM 汇编宏的使用 下篇文章:ARM64 常见汇编指令学习 12 – ARM 汇编函数 的学习 上篇文章:ARM64 常见汇编指令学习 10 – 无符号位域提取指令 BFXIL ARM 汇编宏介绍 在 ARM 汇编中,“.macro” 是用来定义一个宏的指…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
前端调试HTTP状态码
1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...