Kubernetes基础:ConfigMap:增删改查_知行合一 止于至善-程序员宝宝

技术标签: ConfigMap  # 深入浅出kubernetes  增删改查  Kubernetes  

ConfigMap是Kubernetes 在1.2版本中引入的功能,这篇文章围绕者ConfigMap的4种常用的方式创建方法进行介绍,并将关联的查询和修改删除等操作进行说明。

为什么使用ConfigMap

这里使用一张来源与网络的图来说明ConfigMap常见的使用场景之一:
在这里插入图片描述
在Kubernetes 引入ConfigMap时的说明种提到是为了进行“动态配置管理”,上述图示很好地进行了说明,比如名为my-config的配置内容,在开发、测试和生产有不同的配置,通过ConfigMap即可对配置进行动态管理,根据需要进行关联,在实际的使用种更加灵活。

创建ConfigMap的方式

常见的创建方式有如下4种:

  • 使用--from-literal选项在命令行中直接创建
  • 使用--from-file选项指定配置文件创建
  • 使用--from-file选项指定目录进行创建
  • 使用-f选项指定标准的ConfigMap的yaml文件进行创建

环境准备

本文使用Kubernetes 1.17,可参看下文进行快速环境搭建:

查询ConfigMap的方法

  • 查询缺省的default命名空间的ConfigMap信息

执行命令:kubectl get configmap

或者

执行命令:kubectl get cm

  • 查询指定命令空间的ConfigMap信息

执行命令:kubectl get configmap -n 命名空间名称

  • 查询所有命令空间的ConfigMap信息

执行命令:kubectl get configmap -A

或者

执行命令:kubectl get cm -A

事前确认

[[email protected] config]# kubectl get configmap
No resources found in default namespace.
[[email protected] config]# 

创建方式1: 使用from-literal选项

执行命令:kubectl create configmap ConfigMap名称 --from-literal=key1=value1 --from-literal=key2=value2 …

执行示例:

设定项目 设定值
user.name liumiao
user.id 1001
[[email protected] config]# kubectl create configmap user-configmap-literal --from-literal=user.name=liumiao --from-literal=user.id=1001
configmap/user-configmap-literal created
[[email protected] config]#

查询创建的ConfigMap信息

[[email protected] config]# kubectl get configmap
NAME                     DATA   AGE
user-configmap-literal   2      94s
[[email protected] config]# kubectl describe configmap user-configmap-literal
Name:         user-configmap-literal
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
user.id:
----
1001
user.name:
----
liumiao
Events:  <none>
[[email protected] config]#

创建方式2: 使用from-file选项(指定文件名)

执行命令:kubectl create configmap ConfigMap名称 --from-file=ConfigMap文件名

执行示例:

设定项目 设定值
user.name liumiao
user.id 1001

保存上述设定的ConfigMap文件名称为:

[[email protected] config]# ls
user.properties
[[email protected] config]# cat user.properties 
user.name=liumiao
user.id=1001
[[email protected] config]#

创建ConfigMap文件

[[email protected] config]# kubectl create configmap user-configmap-file --from-file=user.properties
configmap/user-configmap-file created
[[email protected] config]#

确认结果

[[email protected] config]# kubectl get cm
NAME                     DATA   AGE
user-configmap-file      1      5s
user-configmap-literal   2      8m57s
[[email protected] config]# kubectl describe configmap user-configmap-file
Name:         user-configmap-file
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
user.properties:
----
user.name=liumiao
user.id=1001

Events:  <none>
[[email protected] config]# 

创建方式3: 使用from-file选项(指定目录名)

执行命令:kubectl create configmap ConfigMap名称 --from-file=ConfigMap文件所在目录名
此种方式与方式2的区别在于如果指定目录下可能会有多个文件

执行示例:

设定项目 设定值
user.name liumiao
user.id 1001

保存上述设定的ConfigMap文件名称为:

[[email protected] config]# ls
user.properties
[[email protected] config]# cat user.properties 
user.name=liumiao
user.id=1001
[[email protected] config]#

指定当前目录进行创建

[[email protected] config]# kubectl create configmap user-configmap-dir --from-file=.
configmap/user-configmap-dir created
[[email protected] config]#

确认结果

[[email protected] config]# kubectl get configmap
NAME                     DATA   AGE
user-configmap-dir       1      5s
user-configmap-file      1      3m58s
user-configmap-literal   2      12m
[[email protected] config]# kubectl describe configmap user-configmap-dir
Name:         user-configmap-dir
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
user.properties:
----
user.name=liumiao
user.id=1001

Events:  <none>
[[email protected] config]#

创建方式4: 使用-f选项

执行命令:kubectl create -f ConfigMap的yaml文件

此种方式的区别在于包括类型、名称以及内容都需要在yaml文件中进行说明,事前准备如下配置文件

[[email protected] config]# cat prometheus.configmap.yml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-configmap
data:
  prometheus.yml: |
    global:
      scrape_interval:     10s 
      evaluation_interval: 10s
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
        - targets: ['localhost:9090']
[[email protected] config]#

创建ConfigMap

[[email protected] config]# kubectl create -f prometheus.configmap.yml 
configmap/prometheus-configmap created
[[email protected] config]# 

结果确认

[[email protected] config]# kubectl get cm
NAME                     DATA   AGE
prometheus-configmap     1      8s
user-configmap-dir       1      6m21s
user-configmap-file      1      10m
user-configmap-literal   2      19m
[[email protected] config]# 
[[email protected] config]# kubectl describe cm prometheus-configmap
Name:         prometheus-configmap
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
prometheus.yml:
----
global:
  scrape_interval:     10s 
  evaluation_interval: 10s
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

Events:  <none>
[[email protected] config]# 

删除操作

执行命令:kubectl delete configmap ConfigMap名称

执行示例

[[email protected] config]# kubectl get cm
NAME                     DATA   AGE
prometheus-configmap     1      5m40s
user-configmap-dir       1      11m
user-configmap-file      1      15m
user-configmap-literal   2      24m
[[email protected] config]# kubectl delete configmap user-configmap-literal
configmap "user-configmap-literal" deleted
[[email protected] config]# kubectl get cm
NAME                   DATA   AGE
prometheus-configmap   1      6m10s
user-configmap-dir     1      12m
user-configmap-file    1      16m
[[email protected] config]# 

修改操作

执行命令:kubectl edit configmap ConfigMap名称

事前确认

[[email protected] config]# kubectl describe configmap user-configmap-file
Name:         user-configmap-file
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
user.properties:
----
user.name=liumiao
user.id=1001

Events:  <none>
[[email protected] config]#

修改ConfigMap设定内容

[[email protected] config]# kubectl edit configmap user-configmap-file
configmap/user-configmap-file edited
[[email protected] config]#

修改内容如下所示

apiVersion: v1
data:
  user.properties: |
    user.name=liumiaocn
    user.id=1003
kind: ConfigMap
metadata:
  creationTimestamp: "2020-01-03T06:18:06Z"
  name: user-configmap-file
  namespace: default
  resourceVersion: "36993"
  selfLink: /api/v1/namespaces/default/configmaps/user-configmap-file
  uid: fc26a0ff-594b-4b4d-bb86-69ee598de97f

修改结果确认

[[email protected] config]# kubectl describe configmap user-configmap-file
Name:         user-configmap-file
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
user.properties:
----
user.name=liumiaocn
user.id=1003

Events:  <none>
[[email protected] config]#
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liumiaocn/article/details/103818799

智能推荐

Prometheus+grafana+alertmanager安装配置_pandaPHA的博客-程序员宝宝

环境配置:两台服务器: pro_server:监控平台+分析展示平台,Linux系统oraclelinux 7.3版本 exp_agent:被监控服务器,Linux系统oraclelinux 7.3版本 软件版本: prometheus-2.3.2.linux-amd64.tar.gz alertmanager-0.15.2.linux-amd64.tar.gz node_expo...

class文件解析示例_smith789的博客-程序员宝宝

class文件的格式等理论概念网上很多,不再赘述,下面是针对一个class文件实例进行”翻译“。源文件package com.sss.jvm.unclassified;public class SimpleUser { public static final int TYPE = 1; private int id; private String name; public int getId(){ return id; } publ

Windows 安装 mysql 5.7.27_张伯毅的博客-程序员宝宝

1. 安装软件下载百度云盘: https://pan.baidu.com/s/1Bob80HghfLtKJ2l8FEiB4Q 密码:spvf官网下载:https://dev.mysql.com/downloads/mysql/5.7.html#downloads选择自己的版本下载选这里跳过登录2. 将下载后的压缩包解压如图路径:D:\T...

Android 数据存储---File内部存储_跟着大数据和AI去旅行的博客-程序员宝宝

Java提供了一套完整的IO流体系,包括FileInputStream、FileOutputStream等,通过这些IO流可以非常方便的访问磁盘上的内容。Android同样支持以这种方式来访问手机存储器上的文件。Context提供了如下两种方法来打开应用程序的数据文件夹里的文件IO流。FileInputStream openFileInput(String name):打开应用程序的数据文件夹下的

最长上升子序列_如此生活二十年的博客-程序员宝宝

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是[2,3,7,101],它的长度是 4class Solution {public: int lengthOfLIS(vector&lt;int&gt;&amp; nums) { int n=nums.s...

解决问题:'strcpy': This function or variable may be unsafe._huanhuan59的博客-程序员宝宝_strcpy unsafe

1.在c程序中编译运行出现警告'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.2.原因:出现这个错误时,是因为...

随便推点

SC2disease:人类疾病的单细胞转录组的人工收集数据库_zty2009_的博客-程序员宝宝

SC2disease:人类疾病的单细胞转录组的人工收集数据库近日,国际权威学术期刊《核酸研究》(Nucleic Acids Research)发表了西北工业大学、西安交通大学、哈尔滨工业大学、复旦大学、天津大学等团队合作开发的首个包含细胞类型特异信息的疾病基因数据库,旨在提供病病例与健康对照之间、病例中不同细胞类型之间以及不同病理程度病例之间基因表达的差异。单细胞RNA测序(scRNA-seq)技术能够以单个细胞分辨率研究复杂生物的转录组,为科学家提供了一种新的工具来研究细胞在表达模式上的异质性,特别

C#通过NI-VISA操作Tektronix TBS 2000B系列示波器_chinaherolts2008的博客-程序员宝宝_c#示波器

c#教程https://www.xin3721.com/eschool/CSharpxin3721/一、概述本文描述采用C#语言访问控制Tektronix TBS 2000B 系列示波器。接口协议采用NI-VISA。最近一个项目需要和一款示波器进行通信,需要对示波器进行一些简单控制并获取到波形数据。经过一段时间研究,大致了解了相关操作,因为发现相关资料不是很多,所以把我了解的相关知识和大家分享一下。文末将提供本文涉及的相关文档、代码、安装程序的下载地址。正常情况下,我们如果需要和一个设备进行

Java实现 LeetCode 405 数字转换为十六进制数_普通网友的博客-程序员宝宝

405. 数字转换为十六进制数给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转...

MAT 专题_weixin_34405332的博客-程序员宝宝

http://smallnetvisitor.iteye.com/blog/1826434运行user任务管理器查看到的pid号:基于jmap导出的堆信息: 用装了mat插件的eclipse打开firstHeap.bin文件选择Leak Suspects Reports模式,finish点击details这些对象有可能会溢出,然后我们打开OQL窗...

数据库作业11:SQL练习7 - GRANT/ REVOKE / AUDIT_newbee2019的博客-程序员宝宝

把查询Student表权限授给用户U1grant selecton studentto u1;点开选择,后面打勾把对Student表和Course表的全部权限授予用户U2和U3grant all privilegeson studentto u2,u3;grant all privilegeson courseto u2,u3;把对表SC的查询权限授予所有用户grant selecton scto public;无异常把查询Student表和修改学生学号的权限授给用户

涉及libpng与zlib的路径_Luylic的博客-程序员宝宝

当运行时发现PKG_CONFIG_PATH路径报错,出现类似这种Package libpng was not found in the pkg-config search path.Perhaps you should add the directory containing `libpng.pc'to the PKG_CONFIG_PATH environment variablePackage 'libpng', required by 'virtual:world', not found报

推荐文章

热门文章

相关标签