K8S——存储ConfigMap

news2024/12/25 13:19:04

configMap描述信息

ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。

ConfigMap API 给我们提供了向容器中注入配置信息的机制,ConfigMap 可以被用来保存单个属性,也可以用来保存整个配置文件或者 JSON 二进制大对象

k8s中存储分为以下几类:

ConfigMap、Volume、Secret、Perstent Volume(pv)

演示 ConfigMap的创建

Ⅰ 使用目录创建

mkdir -p configmap/dir/
cd dir

创建文件

vim game.properties

enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30                          

创建文件

vim ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
vim ui.properties
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice

创建game-config

[root@master dir]# kubectl create configmap game-config --from-file=../dir

—from-file 指定在目录下的所有文件都会被用在 ConfigMap 里面创建一个键值对,键的名字就是文件名,值就 是文件的内容
查看configmap

kubectl get cm game-config
#查看详细信息
kubectl get cm game-config -o yaml 
apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    how.nice.to.look=fairlyNice
kind: ConfigMap
metadata:
  creationTimestamp: "2022-12-22T04:34:49Z"
  name: game-config
  namespace: default
  resourceVersion: "187406"
  selfLink: /api/v1/namespaces/default/configmaps/game-config
  uid: e2a7ced2-21fa-4311-b84c-83b2621e0cf5

Ⅱ 使用文件创建
只要指定为一个文件就可以从单个文件中创建 ConfigMap

kubectl create configmap game-config-2 --from-file=../dir/game.properties

与目录创建../dir的区别是直接指定到文件../dir/game.properties
查看

kubectl get configmaps game-config-2 -o yaml

—from-file这个参数可以使用多次,你可以使用两次分别指定上个实例中的那两个配置文件,效果就跟指定整个
目录是一样的

Ⅲ 使用字面值创建
使用文字值创建,利用 —from-literal 参数传递配置信息,该参数可以使用多次,格式如下

kubectl create configmap special-config --from-literal=special.how=very --from-
literal=special.type=charm
#special-config:configmap名
#--from-literal=键值名=键值
kubectl get configmaps special-config -o yaml

pod 中使用ConfigMap

Ⅰ 使用ConfigMap来替代环境变量

vim pod.yaml

apiVersion: v1
kind: Pod
metadata:
 name: dapi-test-pod
spec:
 containers:
 - name: test-config
   image: nginx
   command: ["/bin/bash","-c","env"]
   env:
    - name: SPECIAL_LEVE_KEY
      valueFrom:
        configMapKeyRef:
         name: special-config
         key: special.how
    - name: SPECIAL_TYPE_KEY
      valueFrom:
        configMapKeyRef:
         name: special-config
         key: special.type    
   envFrom:
     - configMapRef:
        name: env-config #configmap来源 
 restartPolicy: Never
#查看pod及环境变量
[root@master dir]# kubectl get pod
NAME                           READY   STATUS        RESTARTS   AGE
dapi-test-pod                  0/1     Completed     0          2m10s
[root@master dir]# kubectl logs dapi-test-pod   
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=dapi-test-pod
PWD=/
PKG_RELEASE=1~bullseye
HOME=/root
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
log_level=INFO
SPECIAL_LEVE_KEY=very
NJS_VERSION=0.7.9
SHLVL=0
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SPECIAL_TYPE_KEY=charm
NGINX_VERSION=1.23.3
_=/usr/bin/env

在这里插入图片描述
Ⅱ 使用ConfigMap设置命令行参数

vim pod1.yaml

apiVersion: v1
kind: Pod
metadata:
 name: dapi-test-pod1
spec:
 containers:
 - name: test-config1
   image: nginx
   command: ["/bin/bash","-c","echo $(SPECIAL_LEVE_KEY) $(SPECIAL_TYPE_KEY)"]
   env:
    - name: SPECIAL_LEVE_KEY
      valueFrom:
        configMapKeyRef:
         name: special-config
         key: special.how
    - name: SPECIAL_TYPE_KEY
      valueFrom:
        configMapKeyRef:
         name: special-config
         key: special.type
   envFrom:
     - configMapRef:
        name: env-config
 restartPolicy: Never

在这里插入图片描述
在这里插入图片描述
Ⅲ 通过数据卷插入使用ConfigMap

apiVersion: v1
kind: Pod
metadata:
 name: dapi-test-pod2
spec:
 containers:
 - name: test-config2
   image: nginx
   command: ["/bin/bash","-c","sleep 600s"]
   volumeMounts:
    - name: config-volumes
      mountPath: /etc/config
 volumes:
  - name: config-volumes
    configMap:
      name: special-config
 restartPolicy: Never
kubectl create -f pod2.yaml

查看pod2

[root@master dir]# kubectl get pod
NAME                           READY   STATUS        RESTARTS   AGE
dapi-test-pod                  0/1     Completed     0          31m
dapi-test-pod1                 0/1     Completed     0          6m59s
dapi-test-pod2                 1/1     Running       0          9s

查看挂载目录

[root@master dir]# kubectl exec -it dapi-test-pod2 bash
root@dapi-test-pod2:/# cd /etc/config/
root@dapi-test-pod2:/etc/config# ls
special.how  special.type

ConfigMap热更新

[root@apiserver config]# cat 111.yaml 
apiVersion: v1
kind: ConfigMap
metadata: 
 name: log-config
data:
 log_level: INFO## 输出信息
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    replicas: 3
    template: 
       metadata: 
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: nginx
           ports: 
           - containerPort: 80
           volumeMounts:
           - name: config-volume
             mountPath: /etc/config
         volumes:
         - name: config-volume
           configMap:
              name: log-config

在这里插入图片描述
创建

kubectl apply -f 111.yaml 
kubectl get pod 
nginx-deployment-58cc897b99-2khhb   1/1     Running       0          24s
nginx-deployment-58cc897b99-h6qj8   1/1     Running       0          24s
nginx-deployment-58cc897b99-xjpdk   1/1     Running       0          24s

查看挂载目录信息
是否正确

[root@master dir]# kubectl exec -it nginx-deployment-58cc897b99-2khhb  bash
root@nginx-deployment-58cc897b99-2khhb:/# cd /etc/config/
root@nginx-deployment-58cc897b99-2khhb:/etc/config# ls
log_level
root@nginx-deployment-58cc897b99-2khhb:/etc/config# cat log_level 
INFO

编辑configmap实现热更新

kubectl edit cm log-config

在这里插入图片描述
修改后

[root@apiserver config]# kubectl exec -it nginx-deployment-58b5f7c9d-bdxrc bash
root@nginx-deployment-58b5f7c9d-bdxrc:/# cd /etc//config/
root@nginx-deployment-58b5f7c9d-bdxrc:/etc/config# ls
log_level
root@nginx-deployment-58b5f7c9d-bdxrc:/etc/config# cat log_level 
DEBUG

错误信息

如果configmap配置错误使用

#查看cm信息
kubectl get cm
#选择要重新配置的configmap
kubectl  delete configmap  cm名称

如果提示有type错误
也要同时删除pod,再重新创建

如果重新查看修改后的configmap
没有该改变的话删除pod 使nginx重启

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hutool工具并发使用 Sftp sftp = new Sftp(sshHost, sshPort, sshUser, sshPass) 的坑

目录问题描述解决方案Sftp(sshHost, sshPort, sshUser, sshPass) 分析Sftp(Session session) 分析吐槽另外还有一坑 delFile(String filePath)问题描述 看到前人的代码中使用 Sftp sftp new Sftp(sshHost, sshPort, sshUser, sshPass) ; 来创建一个Sftp客户端,然后…

Automatic Exposure Correction of Consumer Photographs 分析

文章目录Automatic Exposure Correction of Consumer Photographs1. 图像分割2. 按灰度区域合并3. 根据细节多少和各zone相对对比度约束,求解每个zone对应的 最优zone.4. 每个zone以及对应的最有zone找到之后,可以求解多项式curve的 ϕs\phi_sϕs​ 和 ϕ…

【Flask框架】——24 创建ROM映射

创建ROM映射 ORM:Object Relationship Mapping 创建一个类,一个类对应了一个数据库中的一张表,类的数据属性对应了表中的字段名,这个类称为映射类。 根据映射类创建出一个一个的对象,每个对象对应了表中的一条实际的…

函数(6)

目录 1、函数是什么? 2、C语言中函数的分类: 1、库函数 2、自定义函数 3、函数的参数 4、函数的调用 5、练习 1、打印100~200之间的素数 2、打印100~200之间的闰年 3、写一个函数,实现一个整形有序数组的二分查找 6、函数的嵌套调…

CSDN每日一练求最小元素 C语言

题目名称:求最小元素 时间限制:1000ms内存限制:256M 题目描述 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]). Find the minimum…

MS17-010漏洞攻击与防御(利用永恒之蓝攻击Win7系统)

任务1 利用永恒之蓝攻击Win7系统 在Kali终端中输入命令“msfconsole ”,启动Metasploit;输入命令“use auxiliary/scanner/smb/smb_ms17_010”,加载扫描模块;输入命令“set RHOSTS 192.168.0.6”,设置需要被扫描的目标…

哈希表题目:环形链表 II

文章目录题目标题和出处难度题目描述要求示例数据范围进阶解法一思路和算法代码复杂度分析解法二思路和算法证明代码复杂度分析题目 标题和出处 标题:环形链表 II 出处:142. 环形链表 II 难度 2 级 题目描述 要求 给你一个链表的头结点 head\tex…

CSDN周赛第16期-100分满分题解

前言 这是时隔两年再参加比赛了,上次参加算法竞赛还是2020年在公司1024活动的时候。当时获得了二等奖(switch套装)和一个快题奖(小米行李箱)。 这次比赛获得了满分,也还不错。题目除了二维积水的问题&…

8Manage:提高项目执行力的策略有哪些?

在项目管理中实施执行战略,将战略目标转化为商业价值的企业将发现取得成功所涉及的大团队——最高管理层、中层管理人员、项目经理和项目团队。 以下是阻碍项目成功执行的六个主要差距: ● 缺少共同的理解 ● 缺乏参与的执行赞助者 ● 与战略目标不一致…

计算机网络—Nginx概述

文章目录nginx负载均衡:例:安装配置nginx————————————————————————————————nginx负载均衡: 请求会打到nginx上面,nginx可以用作负载均衡, 例:一个网站用一台服务器不够&a…

001 软件安装与配置

1、Anaconda安装及使用 1.1 下载地址 Anaconda3-2022.10-Windows-x86_64 1.2 Anaconda创建虚拟环境 下面均在Anaconda终端中输入 查看python版本 python --version1.2.1、Anaconda创建虚拟环境 conda create -n pytorch python3.9conda create 创建虚拟环境命令 -n pytor…

解决vue代码不规范而出现的问题:Eslint修复

当我们刚创建一个vue项目,写代码时候,因为代码写的不规范会出很多问题,报很多错误,除了一个一个去修改他们,还有没有其他办法去解决他们呢? 这里介绍三种办法去统一解决: 方法一:每…

MCU-51:让LED闪烁起来

目录一、LED闪烁1.1 编写代码1.2 延时函数1.3 由0和1控制实现二、LED流水灯2.1 流水灯基础版2.2 移位法实现LED流水灯一、LED闪烁 昨天我们初识单片机,点亮了一个灯开启了我们51单片机的学习之旅。那么今天我们来一步步深入学习。 1.1 编写代码 会了点亮一个灯&a…

嵌入式分享~IO相关1 ##

这里仅总结一下IO控制相关 单片机IO直接驱动继电器 上图是随便找到的两个不同型号的继电器。继电器就是个开关,这个开关是由它内部的线圈控制的,给线圈通电,继电器就吸合,开关就动作了。绝大部分的继电器反面都会有如下图一样的…

win10 git 标准化commit工具commitizen安装教程

1、 安装nodjs https://nodejs.org/en/ 下载最新版本 安装完成后,修改环境变量 默认 nodejs是有的,需要自己添加npm路径 2、安装commitizen 在桌面上右键打开power shell 查看node 和npm的版本,npm最好升级一下 升级命令问题 npm inst…

【HDR】曝光融合(Exposure Fusion)

文章目录0 前言1 算法细节1.1 Naive1.1.1 主要思想1.1.2 权重计算1.1.3 融合1.2 Multi-resolution2 实验3 参考0 前言 在曝光融合(Exposure Fusion)算法问世之前,多曝光序列合成用于显示的HDR需要两个步骤,第一步是将多张不同曝光…

MySql加密存储的数据,如何模糊搜索?

背景 蔚来被勒索 225 万美元,大量数据遭泄露! 根据网络上流传的截图显示,黑客似乎掌握着蔚来内部员工数据 22800 条、车主用户身份证数据 399000 条、用户地址数据 6500000 条、注册用户数据 4850000 条、企业及企业代表联系人数据 10000 条…

dpdk编译

ubuntu网卡信息配置 虚拟机中除去最开始的一块网卡,再另外添加两块网卡,如下图所示 修改Ubuntu20_x64.vmx里面的配置信息 将ethernet0.virtualDev "e1000"里面的e1000更改成vmxnet3,因为e1000只支持网卡单队列,vmxnet3支持网卡对…

5G无线技术基础自学系列 | 5G移动性KPI

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G移动类KPI用来评估NR网络的移动性能&…

29. 如何通过 ABAP 代码给 SAP OData 元数据增添注解

笔者的这篇 SAP UI5 开发教程文章,* SAP UI5 应用开发教程之一百二十九 - 如何给 SAP UI5 SmartField 添加 Value Help 功能,有朋友留言: 你好,请教一个问题,请问如何在odata里面通过annotations添加一个自定义注解&am…