Kubernetes配置管理

目录

  • 什么是ConfigMap
  • 创建ConfigMap
      • 1:基于目录创建ConfigMap
        • 1.创建conf目录,放置文件
        • 2.基于目录下的所有文件创建ConfigMap
        • 3.查看当前创建的ConfigMap
      • 2:基于文件创建ConfigMap
        • 1.单个文件创建ConfigMap
        • 2.使用带有key的命令创建ConfigMap
        • 3.多个文件创建ConfigMap
      • 3:基于ENV文件创建ConfigMap
        • 1.创建测试用的key-value文件
        • 2.创建ConfigMap
      • 4:基于字符值创建ConfigMap
      • 5:删除创建的ConfigMap
  • ConfigMap实践
      • 1:使用valueFrom定义容器的环境变量
        • 1.先以字符集的形式创建ConfigMap
        • 2.使用valueFrom从ConfigMap中定义变量
        • 3.创建此pod
      • 2:使用envFrom定义容器的环境变量
        • 1.使用envFrom从ConfigMap中定义变量
        • 2.创建此pod
      • 3:以文件形式挂载ConfigMap
        • 1.使用带有key的命令创建ConfigMap
        • 2.编写文件,将名为spec-config的ConfigMap挂载到容器的/etc/conf目录下
        • 3.登录容器
      • 4:自定义文件名挂载ConfigMap
        • 1.编写pod文件
        • 2.创建此pod
        • 3.登录容器
      • 5:指定挂载文件权限
        • 1.编写pod文件
        • 2.创建此pod
        • 3.登录容器
      • 6:利用SubPath解决挂载覆盖的问题
        • 1.创建配置文件
        • 2.使用带有key的命令创建ConfigMap
        • 3.创建pod文件,挂载文件
        • 4.登录容器
  • 加密数据管理
      • 1:创建secret
        • 1.使用kubectl命令创建secret
        • 2.通过yaml文件创建secret
      • 2:解码secret
      • 3:在pod中应用secret

什么是ConfigMap

在传统架构中,配置文件往往被保存在宿主机上,程序启动是可以指定某个配置文件,但是使用容器部署时,容器所在的节点并不固定,所以不能使用这种方式,此处在构建镜像时,如果把配置文件也放在容器里面,那么配置文件一旦有更改的话,也是一件非常麻烦的事情。所以k8s 抽象了一个configMap的概念,将配置与 pod 和组件分开,这有助于保持工作负载的可移植性,使配置更易于更改和管理。比如在生产环境中,可以将 Nginx、Redis 等应用的配置文件存储在 configMap 上,然后将其挂载即可使用。
相对于 secret,ConfigMap 更倾向于存储和共享非敏感、未加密的配置信息,假如是集群中使用敏感信息,最好使用 secret。
ConfigMap 用来在键值对数据库(etcd)中保存非加密数据。一般用来保存配置文件。
ConfigMap 可以用作环境变量、命令行参数或者存储卷。
ConfigMap 将环境配置信息与 容器镜像 解耦,便于配置的修改。
ConfigMap 在设计上不是用来保存大量数据的。
ConfigMap中保存的数据不可超过1mb。

创建ConfigMap

ConfigMap 可以用目录(目录下有多个文件)、单个文件或字符值的方式创建,使用 kubect1 创建一个 ConfigMap 的命令格式如下:

kubectl create configmap <map-name><data-source>

map-name:ConfigMap 的名称
data-source:数据源,可以使数据的目录、文件或字符值
ConfigMap 中的数据是以键值对(key-value pair)的形式保存的,其中🔑文件名或秘钥
value:文件内容或字符值

1:基于目录创建ConfigMap

假如一次性需要多个文件来创建 ConfigMap,可以使用 kubectl create configmap 命令从同一个
目录中的多个文件创建 configMap。

1.创建conf目录,放置文件

在这里插入图片描述

2.基于目录下的所有文件创建ConfigMap

在这里插入图片描述
注意:
ConfigMap 是按namespace 隔离的,不同的namespace 之间的configMap 的名称可以相同,但是不能跨namespace 进行访问,创建ConfigMap 时,可以使用-n选项指定资源所在的namespace。

3.查看当前创建的ConfigMap

在这里插入图片描述
注意:
由于该 ConfigMap 是直接基于目录创建的,没有指定 ConfigMap 中的 key 名,因此默认是按照目录下的文件名作为 ConfigMap 数据中的 key 名。

2:基于文件创建ConfigMap

1.单个文件创建ConfigMap

在这里插入图片描述
注意:
由于没有指定 ConfigMap 的 key,因此使用文件名作为 key。

2.使用带有key的命令创建ConfigMap

在这里插入图片描述

3.多个文件创建ConfigMap

在这里插入图片描述

3:基于ENV文件创建ConfigMap

假如有一个文件 game-env-file.cfg,里面存储的 key=value 形式的数据,此类文件可以当做某个应用的环境变量配置,此时可以使用–from-env-file 从 ENV 文件创建 configMap。

1.创建测试用的key-value文件

在这里插入图片描述

2.创建ConfigMap

在这里插入图片描述

4:基于字符值创建ConfigMap

利用字符值创建ConfigMap
在这里插入图片描述

5:删除创建的ConfigMap

在这里插入图片描述

ConfigMap实践

本实践案例将 CM 创建的变量引入到 pod 内。
在 kubernetes 中,用户可以使用环境变量引用 ConfigMap 中的数据,当容器启动时,kubernetes会将 configMap 数据作为环境变量注入到容器的进程中。为了使用 configMap 中的数据,用户需要在 pod的规范(spec)中定义一个 env 字段,并指定 configMap 中的“键值对”

1:使用valueFrom定义容器的环境变量

1.先以字符集的形式创建ConfigMap

在这里插入图片描述

2.使用valueFrom从ConfigMap中定义变量

在这里插入图片描述
在此案例中,env 用于定义环境变量,valueFrom 指定了环境变量的值来源于ConfigMap。“name:my-name01”用于定义容器中用的变量名,其值来自于 CM 中的 name1 的值。“name1”是在 CM 中定义的 key。
用 valueFrom 的方式引入 pod 中的变量名,可以在定义 pod 的之后指定成另一个名称。相当于在 pod中起了一个新的名字,但是值还是原来 ConfigMap 中给定的值。

3.创建此pod

在这里插入图片描述

2:使用envFrom定义容器的环境变量

k8s 从 1.6的版本开始,引入了一个新的字段 envFrom,实现了在 Pod 中将 configMap 中所有定义的key=value 自动生成为环境变量。
使用 envFrom 时,环境变量的名字是 configMap 中数据的 key 名。

备注:valueFrom 和envfrom的区别
通过 valueFrom 来配置环境变量,Pod 的环境变量名与 configMap 中定义的变量名不必相同valueFrom 是指定变量进行映射。
通过 envFrom 会把 configMap 的所有键值对都映射到 Pod 的环境变量中去envFrom 配置的环境变量和 Pod 的环境变量名是相同的

1.使用envFrom从ConfigMap中定义变量

在这里插入图片描述

2.创建此pod

在这里插入图片描述
在这里插入图片描述

3:以文件形式挂载ConfigMap

大部分情况下,ConfigMap 定义的都是配置文件,而不是环境变量,因此需要将 ConfigMap 的文件挂载到 Pod 中,然后 Pod 中的容器就可以引用,此时可以通过 Pod 的 volume 字段进行挂载。

1.使用带有key的命令创建ConfigMap

在这里插入图片描述

2.编写文件,将名为spec-config的ConfigMap挂载到容器的/etc/conf目录下

在这里插入图片描述
在这里插入图片描述注意:
容器的/etc/config 目录会被覆盖掉

3.登录容器

在这里插入图片描述

4:自定义文件名挂载ConfigMap

很多情况下,需要更改挂载的文件名,可以使用 path 字段指定 ConfigMap 挂载的文件名,比如将文件 app2.conf 挂载到/etc/conf 下,并重命名为 app2.cfg。

1.编写pod文件

在这里插入图片描述

2.创建此pod

在这里插入图片描述

3.登录容器

在这里插入图片描述

5:指定挂载文件权限

1.编写pod文件

在这里插入图片描述
备注:
defaultMode:0666
没有设置权限的其他文件默认的权限

2.创建此pod

在这里插入图片描述

3.登录容器

在这里插入图片描述

6:利用SubPath解决挂载覆盖的问题

当挂载 ConfigMap 或 Secret 到容器内部时,会覆盖容器中的目录,也就是是说,在容器中的对应的目录中,就只剩下我们挂载进去的文件,此目录中其他的文件都会丢失。从而导致容器无法正常运行。为了解决挂载覆盖的问题,需要使用 subPath 的方式进行挂载。

1.创建配置文件

在这里插入图片描述

2.使用带有key的命令创建ConfigMap

在这里插入图片描述
在这里插入图片描述

3.创建pod文件,挂载文件

在这里插入图片描述
备注:
mountPath 表示容器中目录
subPath 表示configMap 中文件的key 名
items::这部分定义了如何将 configMap 中的键值对映射到文件系统中。
key: nginx.conf:这个键(key)是指 ConfigMap 中的一个键值对的键名,这里的键名是nginx.conf.
path:nginx.conf:这指定了当这个键被注入到容器的文件系统时,它将被写入的具体路径和文件名

在这里插入图片描述

4.登录容器

在这里插入图片描述

加密数据管理

上一节讲解的 ConfigMap 主要用于非安全的数据,与其对应的是 Secret 对象类型,用来保存敏感信息,例如密码、令牌或 SSH Key,将这些信息放在 Serret 中比较安全和灵活。用户可以创建 Secret 并且引用到 Pod 中,比如使用 Secre 初始化 Redres、MySQL 密码等。

1:创建secret

1.使用kubectl命令创建secret

创建账户信息
在这里插入图片描述
备注:
generic:通用类型
user-pass:创建的secret 的名字

查看Secret:
在这里插入图片描述
备注:
Opaque:不透明的,表示 secret是加密的形式保存数据的
在这里插入图片描述

在这里插入图片描述
默认情况下,get 和 describe 命令都不会显示文件的内容,这是为了防止 Secret 中的内容被意外暴露。所以,显示出来的信息中 Data字段没有对应的值,只显示了文件的名字。

2.通过yaml文件创建secret

手动创建 Secret 时,每一项内容必须是 base64 编码的,所以要先对明文进行编码:
在这里插入图片描述
在这里插入图片描述
创建一个secret
在这里插入图片描述

2:解码secret

在这里插入图片描述
在这里插入图片描述

3:在pod中应用secret

secret 和 ConfigMap 的用法类似,也可以作为数据卷挂载,或作为环境变量以供 Pod 的容器使用。
和 configMap 一样,可以在 Pod 的 volume 中使用 Secret:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

golang怎么实现每秒100万个请求(QPS),相关系统架构设计详解

一.需求 使用Golang,以Gin框架为基础,设计一个能够处理每秒100万请求(QPS 1M)的系统架构 注意:100万QPS是一个很高的数字,单机通常难以处理,所以必须采用分布式架构,并且需要多层次的架构设计和优化 二.搭建步骤 1.系统架构设计 为了实现高并发,需要考虑以下几个方面…

HCIA再复习

第一章.网络基础1.1 网络类型分类网络按照二层链路类型分为以下四种&#xff1a;多点接入网络&#xff08;MA&#xff09;&#xff1a;1&#xff0c;广播型多点接入&#xff08;BMA&#xff09;&#xff1a;如以太网&#xff0c;支持广播&#xff0c;设备通过MAC地址通信&#…

Qt 数据库连接池实现与管理

在 Qt 应用程序中&#xff0c;频繁创建和销毁数据库连接会带来显著的性能开销。数据库连接池通过复用现有连接&#xff0c;避免重复创建和销毁连接的开销&#xff0c;从而提高应用程序的响应速度和吞吐量。本文将详细介绍 Qt 中数据库连接池的实现与管理方法。 一、数据库连接池…

数据采集分析:从信息洪流中掘金的科学与艺术

——如何将原始数据转化为商业决策的黄金&#xff1f;&#x1f310; 引言&#xff1a;我们正淹没在数据的海洋&#xff0c;却渴求着知识的甘泉每天全球产生 2.5万亿字节 数据&#xff08;相当于每秒下载4.5万部高清电影&#xff09;&#xff0c;但未经分析的数据如同未提炼的原…

Oracle国产化替代:一线DBA的技术决策突围战

从“如履薄冰”到“游刃有余”,中国数据库的自主之路正重塑技术人的思维地图。 “凌晨三点的最后一次数据校验通过,割接系统绿灯全亮——**河北移动核心账务系统的Oracle数据库已被GoldenDB完全替代**。”2025年6月底,这场持续两年的攻坚战画上句号。当全省业务流量平稳切…

OS19.【Linux】进程状态(1)

目录 1.情景引入 2.操作系统学科对进程状态的分类 运行状态 基于时间片的轮转调度算法 阻塞状态 等待IO设备的例子 等待其他进程中需要获取的数据 进程唤醒 挂起状态(全称为阻塞挂起状态) 简单谈谈虚拟内存管理 就绪状态 笔面试题 3.Linux对进程状态的分类 R和S状…

Hadoop小文件合并技术深度解析:HAR文件归档、存储代价与索引结构

HDFS小文件问题的背景与挑战在Hadoop分布式文件系统&#xff08;HDFS&#xff09;的设计哲学中&#xff0c;"大文件、流式访问"是核心原则。然而现实场景中&#xff0c;海量小文件&#xff08;通常指远小于HDFS默认块大小128MB的文件&#xff09;的涌入却成为系统性能…

Verilog 提取信号的上升沿或者下降沿

上升沿提取代码&#xff1a;reg [1:0] F1;always (posedge clk)beginif(rst_n 1b0) F1[1:0]<2b00;else F1[1:0]<{F1[0],start_i};endwire start_l2h (F1[1:0]2b01)?1b1:1b0;下降沿提取代码&#xff1a;reg [1:0] F1;always (posedge clk)b…

.Net core 部署到IIS出现500.19Internal Server Error 解决方法

.Net core 部署到IIS&#xff0c;网页出现500.19Internal Server Error 解决方法解决方法 在URL:https://dotnet.microsoft.com/zh-tw/download/dotnet/8.0下载并安装dotnet-hosting-8.0.18-win.exe 重启IIS服务器

Linux 基本命令整理

&#x1f427; Linux 基本命令整理 为了方便初学者快速掌握 Linux 常用命令&#xff0c;以下是经过分类整理的核心命令及用法说明。 &#x1f4c2; 目录操作与文件管理 pwd 核心功能&#xff1a;打印当前工作目录的绝对路径&#xff0c;明确用户所在位置。 实操示例&#x…

牛客周赛 Round 101(题解的token计算, 76修地铁 ,76选数,76构造,qcjj寄快递,幂中幂plus)

A题解的token计算要记住c中的对数函数&#xff1a;log(n) 是自然对数&#xff08;以e为底&#xff09;ln(nlog10(n) 是以10为底的对log1p(n) 是ln(1n)&#xff0c;提供更高的数值精log2(n) 是以2为底的对logl(n) 和 log10l(n) 是long double版#define _CRT_SECURE_NO_WARNINGS …

商场导航软件:3D+AI 基于Deepseek 模型的意图识别技术解析

本文面向室内导航工程师、商场导航系统优化师及LBS 应用开发的技术员&#xff0c;解析商场室内导航系统 3DAI 三大核心技术模块&#xff0c;并提供可直接复用的工程解决方案。如需获取商场导航系统技术方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信作者…

借助Aspose.HTML控件,使用 Python 编程将网页转换为 PDF

使用 Python 将网页转换为 PDF 有时您需要离线访问网页&#xff0c;使其更易于访问。因此&#xff0c;将HTML页面转换为PDF即可满足您的需求。令人惊讶的是&#xff0c;您可以在几秒钟内在 Python 项目中启用 HTML 到 PDF 的转换。本指南将为 Python 开发人员介绍一个功能强大…

数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用位运算

目录 预备知识 左移运算&#xff08;<<&#xff09; 位运算 一、从最朴素的方法开始 二、如果只关心“有没有出现过”&#xff0c;不关心“次数”&#xff0c;还能不能更省&#xff1f; 三、有没有一种更“紧凑”的方式表示26个开关&#xff1f; 四、用一个整数的…

DevOps 完整实现指南:从理论到实践

DevOps 是一种集软件开发&#xff08;Dev&#xff09;与 IT 运维&#xff08;Ops&#xff09;于一体的文化、实践和工具链&#xff0c;旨在通过自动化流程、持续集成/持续交付&#xff08;CI/CD&#xff09;、基础设施即代码&#xff08;IaC&#xff09;和跨团队协作&#xff0…

使用 5 种安全解决方案将 Android 短信导出为PDF

想要将安卓手机短信导出为 PDF 格式&#xff0c;用于法律用途、情感表达或仅仅为了记录&#xff1f;总之&#xff0c;您可以保存安卓手机短信并将其转换为 PDF 格式&#xff0c;确保它们井然有序&#xff0c;方便打印。快来获取解决方案吧&#xff01;第 1 部分&#xff1a;如何…

再谈fpga开发(fpga开发的几个差异)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】学习嵌入式的同学都知道&#xff0c;嵌入式一般分成这几种chip&#xff0c;有51&#xff0c;有stm32 mcu&#xff0c;有soc&#xff0c;有dsp&#…

Kafka运维实战 11 - kafka查看消息的具体内容【实战】

目录kafka 消息查看1. 直接查看日志文件内容步骤&#xff1a;2. 使用 Kafka 工具查看日志主要参数说明常用命令&#xff1a;输出说明&#xff1a;3. 注意事项kafka 消息日志文件详解我们有时候遇到这样的需求&#xff0c;需要查看下kafka消息的内容。 kafka 消息查看 查看 Ka…

【自动化测试】JMeter+Jenkins自动化接口与性能测试环境部署指南

环境准备与基础配置 软硬件环境要求 工具链安装部署 工具链安装部署涉及JDK、JMeter、Jenkins等核心组件,其在Linux与Windows环境下的安装流程存在显著差异,企业级部署需重点关注静默安装、权限控制及数据备份配置。以下从组件安装差异、企业级部署要点及备份配置三方面展开…

三步实现Android系统级集成:预装Google TTS + 默认引擎设置 + 语音包预缓存方案

在定制Android系统时&#xff0c;预装Google TTS引擎并实现开箱即用的语音服务能显著提升用户体验。本文将详解预装APK→设为默认引擎→语音包预缓存的实现方案&#xff0c;适用于ROM开发者或系统定制场景。分步实现方案 预装Google TTS APK 预装APK这里可以采用很多种方式&…