Kubernetes配置管理(kubernetes)

news2024/9/28 0:15:50

实验环境:

在所有节点上拉取镜像;然后把资源清单拉取到第一个master节点上;

同步会话,导入镜像:

configmap/secret

配置文件的映射

变量:

基于valuefrom的方式 cm--》pod

特点:变量的名称可以和之前的不同

可以有选择性的选择--部分变量

基于envfrom

变量的名称和初始名称相同

将cm中的所有变量都引入进pod

字符值

etcd

配置文件 cm pod

数据量小于1M

1:先创建cm,再应用。

2:pod引用的键要存在于cm。

3:基于envFrom的方式,将变量映射到pod,如果你指定的变量不存在于cm中,会无视它。

4:pod和cm需要在相同的命名空间

先创建一个目录;

然后进入到这个目录中进行测试:

针对目录创建一个configmap;

且注意,cm受到命名空间的隔离,名字不能重复。

如何针对文件创建configmap;

创建的时候指定到文件即可;

但是可以查看,新创建的文件不会加入到已创建的cm中;

第二种创建的方式:带有key的方式;

在路径的前面加上名称,就可以为该文件起名字;

以上演示了针对目录及针对文件的创建,下面演示针对多个文件进行创建;

写两个from即可;

如何将变量创建;

第一种可以在生成pod的时候指定变量字段;

第二种就是以创建cm的方式;

创建出来:

如何将字符值创建到容器中;

如何删除configmap:

如何放到pod中;

先创建一个字符值的configmap;

然后打开一个已经编写好的yaml文件;

顶部声明

  • apiVersion: v1:这指定了使用Kubernetes API的版本号。v1是Kubernetes中最常用的API版本之一,支持核心Kubernetes对象,如Pods、Services等。

  • kind: Pod:这表示我们正在定义一个Pod对象。Pod是Kubernetes中能够创建和管理容器的最小部署单元。

Pod的元数据(metadata)

  • name: env-valuefrom:这是Pod的名称,Kubernetes集群中的每个资源都必须有一个唯一的名称。

Pod的规格(spec)

Pod的规格定义了Pod中容器的详细配置。

  • containers:这是一个列表,定义了Pod中将要运行的容器。在这个例子中,我们只有一个容器。

    • name: env-valuefrom:这是容器的名称。

    • image: busybox:v1:这指定了容器将使用的镜像。在这个例子中,它使用busybox镜像的v1版本,这是一个非常小的Linux镜像,常用于测试。

    • command: [ "/bin/sh","-c","env" ]:这指定了容器启动时要执行的命令。在这个例子中,它使用/bin/sh(一个shell)来执行env命令,这会列出容器中的所有环境变量。

  • env:这是一个列表,用于定义要注入到容器中的环境变量。

    • 第一个环境变量my-name01的值来源于ConfigMap对象spec-config-2中的name1键。

    • 第二个环境变量my-name02的值同样来源于ConfigMap对象spec-config-2中的name2键。

    • 这里使用了valueFrom字段,特别是configMapKeyRef,它允许Pod从ConfigMap中读取键值对作为环境变量的值。这是配置容器以从Kubernetes资源中获取配置信息的常用方法。

  • restartPolicy: Never:这指定了Pod的重启策略。Never表示Pod一旦终止(无论是成功还是失败),都不会自动重启。这是用于运行一次性任务的Pod(如批处理作业)的常用策略。

总结

这个YAML文件定义了一个名为env-valuefrom的Pod,该Pod包含一个容器,该容器在启动时运行env命令来列出其环境变量。其中两个环境变量(my-name01和my-name02)的值是从名为spec-config-2的ConfigMap中读取的,分别对应于该ConfigMap中的name1和name2键。这种配置方法允许Pod以动态方式从Kubernetes资源中获取配置信息,提高了配置的灵活性和可管理性。

将这个pod创建出来:

由于yaml文件中已经指定在创建pod的时候执行env命令,所以不必登录进去;

查看日志即可;

查看关于env的yaml文件;

  • apiVersion: v1:指定了Kubernetes API的版本为v1。

  • kind: Pod:声明这个YAML文件定义的是一个Pod资源。

  • metadata:包含了Pod的元数据。

    • name: env-envfrom:Pod的名称被设置为env-envfrom。

  • spec:定义了Pod的规格说明。

    • containers:列表中包含了一个或多个容器定义。

      • name: env-envfrom:容器的名称被设置为与Pod相同的名称,即env-envfrom。

      • image: busybox:v1:指定容器使用的镜像为busybox的v1版本。

      • command: [ "/bin/sh","-c","env" ]:容器启动时执行的命令。这里,它使用/bin/sh shell来执行env命令,该命令会列出容器中的所有环境变量。

      • envFrom:这是一个列表,用于从资源(如ConfigMap)中批量添加环境变量到容器中。

        • configMapRef:指示envFrom字段应该从哪个ConfigMap中读取环境变量。

          • name: spec-config-2:指定了ConfigMap的名称为spec-config-2。这意味着Pod中的容器将从spec-config-2 ConfigMap中读取所有键值对,并将它们作为环境变量添加到容器中。

  • restartPolicy: Never:指定了Pod的重启策略为Never,即Pod一旦终止,就不会自动重启。

创建一个cm;

然后再尝试将cm放入到pod中;

  • apiVersion: v1:指定了Kubernetes API的版本为v1,这是Pod资源的基本版本。

  • kind: Pod:声明了这是一个Pod资源。

  • metadata:包含了Pod的元数据。

    • name: dapi-test1-pod:Pod的名称被设置为dapi-test1-pod。

  • spec:定义了Pod的规格说明。

    • containers:列表中包含了一个或多个容器定义。

      • name: dapi-test1-pod:容器的名称被设置为与Pod相同的名称,但通常建议为容器指定更具描述性的名称。

      • image: kubeguide/tomcat-app:v1:指定容器使用的镜像为kubeguide/tomcat-app的v1版本。

      • ports:定义了容器内部暴露的端口。

        • containerPort: 8080:表示容器内的Tomcat应用监听在8080端口上。

      • volumeMounts:定义了容器内的挂载点,用于挂载卷(Volumes)到容器内的指定路径。

        • name: config-volume:指定了卷的名称为config-volume。

        • mountPath: /etc/conf:指定了卷在容器内的挂载路径为/etc/conf。

  • volumes:定义了Pod中可用的卷(Volumes)。

    • name: config-volume:定义了卷的名称为config-volume,这与上面volumeMounts中引用的卷名称相匹配。

    • configMap:指定了这个卷是由ConfigMap创建的。

      • name: spec-config02:指定了ConfigMap的名称为spec-config02。Kubernetes将从这个ConfigMap中读取数据并将其挂载到容器中。

      • items:这是一个可选字段,用于从ConfigMap中选择性地挂载特定的键。然而,在您的YAML中,items字段后面没有给出具体的键名或路径映射,这通常意味着您想要挂载ConfigMap中的所有数据,或者您的YAML文件在这里被截断了。如果确实需要选择性地挂载数据,您应该在这里列出ConfigMap中的键和它们应该被挂载到容器内的哪个路径(使用key: path格式)。

创建出来,然后登录到容器中。

验证:

假使cm中有多个文件,但是只想调用指定的文件,就可以参考一下yaml文件。

apiVersion: v1

这指定了YAML文件使用的Kubernetes API的版本,这里是v1,表示使用Kubernetes的核心API的第一个稳定版本。

kind: Pod

这指定了YAML文件定义的资源类型为Pod。Pod是Kubernetes中可以创建和管理的最小部署单元,它通常封装了一个或多个容器。

metadata

metadata部分包含了Pod的元数据,如名称、标签等。

  • name: dapi-test2-pod:这定义了Pod的名称为dapi-test2-pod。

spec

spec部分定义了Pod的规格说明,包括容器列表、存储卷等。

  • containers: 这是一个容器列表,每个容器都有它的配置。

    • name: 容器的名称为dapi-test2-pod,这里容器名称和Pod名称相同,但在实际使用中,容器名称可以不同。

    • image: 指定了容器使用的镜像,这里是kubeguide/tomcat-app:v1。

    • ports: 定义了容器需要暴露的端口。这里暴露了8080端口,但请注意,这仅表示容器内部端口,要使这个端口对外部可见,还需要配置Service等资源。

    • volumeMounts: 定义了如何将存储卷挂载到容器内部。

      • name: 挂载的存储卷名称为config-volume。

      • mountPath: 存储卷在容器内部的挂载路径为/etc/conf。

  • volumes: 定义了Pod中使用的存储卷。

    • name: 存储卷的名称为config-volume,与上面volumeMounts中引用的名称相同。

    • configMap: 表示这个存储卷来自于一个ConfigMap。

      • name: ConfigMap的名称为spec-config02。

      • items: 定义了ConfigMap中哪些键值对应该被挂载到Pod中,以及它们在容器内部的文件名。

        • key: app1.conf 和 path: app1.cfg:表示ConfigMap中名为app1.conf的键的值将被挂载到容器中的/etc/conf/app1.cfg文件。

        • key: app2.conf 和 path: app2.cfg:类似地,app2.conf的键的值将被挂载到/etc/conf/app2.cfg文件。

针对文件修改权限;

apiVersion: v1

这指定了YAML文件使用的Kubernetes API版本为v1,这是Kubernetes核心API的稳定版本。

kind: Pod

这表示YAML文件定义的资源类型为Pod。

metadata

metadata部分包含了Pod的元数据。

  • name: dapi-test3-pod:定义了Pod的名称为dapi-test3-pod。

spec

spec部分定义了Pod的规格说明。

  • containers: 这是一个容器列表,这里只有一个容器。

    • name: 容器的名称为dapi-test3-pod。

    • image: 指定了容器使用的镜像为kubeguide/tomcat-app:v1。

    • ports: 定义了容器需要暴露的端口,这里是8080端口。但请注意,这仅表示容器内部端口,要使这个端口对外部可见,还需要配置Service等资源。

    • volumeMounts: 定义了如何将存储卷挂载到容器内部。

      • name: 挂载的存储卷名称为config-volume。

      • mountPath: 存储卷在容器内部的挂载路径为/etc/conf。

  • volumes: 定义了Pod中使用的存储卷。

    • name: 存储卷的名称为config-volume,与上面volumeMounts中引用的名称相同。

    • configMap: 表示这个存储卷来自于一个ConfigMap。

      • name: ConfigMap的名称为spec-config02。

      • items: 定义了ConfigMap中哪些键值对应该被挂载到Pod中,以及它们在容器内部的文件名和文件权限。

        • key: app1.conf 和 path: app1.cfg:表示ConfigMap中名为app1.conf的键的值将被挂载到容器中的/etc/conf/app1.cfg文件。

          • mode: 0644:指定了文件在容器内的权限为644(即文件所有者具有读写权限,而组用户和其他用户只有读权限)。

        • key: app2.conf 和 path: app2.cfg:类似地,app2.conf的键的值将被挂载到/etc/conf/app2.cfg文件。但这里没有为app2.cfg指定mode,因此它将使用defaultMode(如果指定了的话)。

      • defaultMode: 这是一个可选字段,用于为未显式指定mode的挂载文件设置默认权限。在这个例子中,它被设置为0666(即所有用户都具有读写权限,但请注意,在Unix和类Unix系统中,可执行权限位(如7的末尾位)对于非可执行文件通常没有意义,因此这里的0666实际上意味着所有用户都有读写权限,但没有执行权限)。然而,需要注意的是,并不是所有的Kubernetes环境都支持在ConfigMap挂载时设置文件权限,这取决于你使用的Kubernetes版本和底层存储系统。

请注意,虽然defaultMode被设置为0666,但由于app1.cfg已经显式设置了mode: 0644,因此app1.cfg的权限将是0644,而app2.cfg(如果没有其他配置覆盖)将继承defaultMode的值(如果环境支持的话)。但是,如之前所述,defaultMode的支持可能因环境而异。

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

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

相关文章

109.游戏安全项目:信息显示二-利用游戏通知辅助计算基址

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:易道云信息技术研究院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信…

C++之二叉搜索

1.二叉搜索树的概念 二叉搜索树又称为二叉排序树,它有以下的特点。 1.如果它的左子树不为空,则左子树上所以结点的值都小于等于根结点的值 2.如果它的右子树不为空,则右子树上所有结点都大于等于根结点的值 3.它的左右子树也分别为二叉搜…

Lab1:虚拟机kolla安装部署openstack,并创建实例

实验内容: 创建并配置虚拟机安装OpenStack创建镜像创建实例类型选择网络配置创建实例 1、选择一个适合你的系统的虚拟机管理软件: VirtualBox (推荐) VMWare 其他 2、下载 .iso 镜像文件 openstack S 版本 iso 链接&#xff1…

Llama系列迈向多模态新时代:3.2版本开源超越闭源,并携手Arm推出手机优化版

在多模态领域,开源模型也超闭源了! 就在刚刚结束的 Meta 开发者大会上,Llama 3.2 闪亮登场: 这回不仅具备了多模态能力,还和 Arm 等联手,推出了专门为高通和联发科硬件优化的 “移动” 版本。 具体来说&a…

jmeter压测常见报错总结

address already in use:connect 报错原因: 1、windows系统为了保护本机,限制了其他机器到本机的连接数. 2、TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期&#xff08…

javaJUC基础

JUC基础知识 多线程 管程 Monitor,也就是平时所说的锁。Monitor其实是一种同步机制,它的义务是保证(同一时间)只有一个线程可以访问被保护的数据和代码块,JVM中同步是基于进入和退出监视器(Monitor管程对…

【MySQL】数据库表的基本查询——增删查改

W...Y的主页 😊 代码仓库分享💕 目录 表的增删改查 Create 单行数据 全列插入 多行数据 指定列插入 插入否则更新 替换 Retrieve SELECT 列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 WHERE 条件 结果排序 筛选…

ETLCloud携手ClickHouse:高效的数据查询效率

自从大数据处理技术走进大众视野、开源项目Hadoop的出现,以前受制于数据库处理能力的大数据技术蓬勃发展,传统关系型数据库所构建的数据仓库,被以Hive为代表的大数据技术所取代,随着技术不断发展,Hadoop虽然带来了诸多…

Harbor的安装与使用

任务分析 一、规划节点 IP地址 主机名 节点 192.168.20.20 master 容器master节点 192.168.20.21 node 容器worker节点 二、基础准备 镜像使用CentOS7.9(主机配置自定义,推荐配置4vCPU/12G内存/100G硬盘),使用这两台云…

韦东山FreeRTOS笔记

介绍 这篇文章是我学习FreeRTOS的笔记 学的是哔哩哔哩韦东山老师的课程 在学习FreeRTOS之前已经学习过江协的标准库和一丢丢的超子说物联网的HAL了。他们讲的都很不错 正在更新, 大家可以在我的Gitee仓库中下载笔记源文件、项目资料等 笔记源文件可以在Notion…

鸿蒙OS开发之动画相关示例分享, 关于弹出倒计时动画的实战案例源码分享

基础动画案例 Entry Component struct Index {StatebtnWidth:number 200 // 按钮的宽度StatebtnHeight:number 100 // 按钮的高度build() {Row(){Column(){Button("测试").width(this.btnWidth).height(this.btnHeight)// 按钮: 用来启动动画Button("动画开始…

USB2.0主机设备检测过程以及信号分析

一,USB协议发展 USB接口自1994年推出以来,经过30年的发展,从USB1.0发展到了现在的USB4.0,传输速率也从最开始的1.5Mbps,大幅提高到了最新的40Gbps。 USB协议按照速度等级和连接方式分可分为7个版本,但是从…

docker -私有镜像仓库 - harbor安装

文章目录 1、镜像仓库简介2、Harbor简介3、下载与安装3.1、下载3.2、安装3.2.1、上传harbor-offline-installer-v2.8.2.tgz到虚拟机中解压并修改配置文件3.2.2、解压tgz包3.2.3、切换到解压缩后的目录下3.2.4、准备配置文件3.2.5、修改配置文件 4、启动Harbor5、启动关闭命令6、…

为什么这款智能在线派单软件成为行业首选?

智能在线派单软件通过自动化任务分配等提升效率,ZohoDesk因其全方位服务管理、智能分配、定制性强、数据分析等功能,成为企业优选。实例涵盖物流、家政、维修、医疗等行业,提高效率和客户满意度。 一、智能在线派单软件有什么功能 在深入探讨…

【Java】包装类【主线学习笔记】

文章目录 前言包装类基本数据类型与包装类之间的转换基本数据类型转换为包装类可以通过以下几种方式:包装类转换为基本数据类型可以通过以下几种方式:初始化值不同与String之间的转换 前言 Java是一门功能强大且广泛应用的编程语言,具有跨平台…

带你重新深入了解STM32单片机

目录 一. 前言 二. 片上资源外设 三. 单片机命名规则 四. STM32的系统结构 五. STM32F103C8T6的引脚定义 六. 启动配置 一. 前言 本篇文章主要讲述对STM32单片机的介绍,包括片上资源和外设,STM32产品系列,内存存储器容量以及STM32的系统…

Java每日面试题(JVM)(day15)

目录 Java对象内存布局markWord 数据结构JDK1.8 JVM 内存结构JDK1.8堆内存结构GC垃圾回收如何发现垃圾如何回收垃圾 JVM调优参数 Java对象内存布局 markWord 数据结构 JDK1.8 JVM 内存结构 程序计数器: 线程私有,记录代码执行的位置. Java虚拟机栈: 线程私有&#…

服务器操作系统【sar 命令】

sar 安装、语法参数说明以及示例 文章目录 功能概述一、功能介绍1.安装配置2. 配置3. 启动二、sar 语法及参数说明三、示例及释义1.汇报 io 传输速率信息2.内存分页信息3.块设备状态信息4.hugepages 利用率统计信息5.列长度和负载平均值6.内存利用率统计信息7.swap 交换空间利用…

中国的互联网电商,终于还是“连上了”

什么才是更好的互联网? 答案很简单:真正的互联。 9月26日,据市场消息,京东物流和菜鸟速递将分别接入淘天、京东平台。同时,京东也将在“双11”前开通支付宝支付,时隔13年再度携手阿里支付体系。 消息一出…

【Redis入门到精通八】Redis事务与MySQL事务对比

目录 事务 1.MySQL中事务的特性 2.Redis事务与MySQL事务的区别 3.Redis事务操作演示 事务 什么是事务呢?事务的概念其实就是把一系列操作绑定成一组,让这一组操作能够批量执行,不过在MySQL中有复杂的机制能够保证这一组操作执行并且一定能…