如何在虚拟机里面做网站/百度首页 百度一下
实验环境:
在所有节点上拉取镜像;然后把资源清单拉取到第一个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的支持可能因环境而异。
相关文章:

Kubernetes配置管理(kubernetes)
实验环境: 在所有节点上拉取镜像;然后把资源清单拉取到第一个master节点上; 同步会话,导入镜像: configmap/secret 配置文件的映射 变量: 基于valuefrom的方式 cm--》pod 特点:变量的名称可…...

macOS与Ubuntu虚拟机使用SSH文件互传
1.ubuntu配置: 安装openssh服务: sudo apt-get install openssh-server -y 查看服务启动状态: systemctl status ssh 2.macOS使用scp连接ubuntu并发送文件 查看ubuntu IP : ifconfigmacOS终端连接ubuntu : sc...

defineExpose 显式导出子组件方法
当父组件调用子组件的script setup中的方法时,必须显式导出该方法。因为 script setup 中定义的变量和方法默认是局部的,只有显式导出后,父组件才能访问这些方法。 //父组件-Parent <template><el-button type"primary" …...

vue 解决列表界面进入明细返回查询条件不变
在Vue中,如果你遇到了列表界面进入详情页面后返回查询条件不变的问题,可能是因为你没有正确地管理状态或者是使用了不合适的组件间通信方式。 解决方案通常涉及到以下几点: 使用Vuex来管理状态,确保查询条件保存在全局状态树中&…...

华为NAT ALG技术的实现
双向NAT技术:经过防火墙的2报文源IP地址和目的IP地址都同时被转换,外网发送报文给内网服务器,先转换目的IP地址,然后符合安全策略后,在替换源IP地址,然后将记录写入防火墙会话表,并发送出报文&a…...

【移植】轻量系统STM32F407芯片移植案例
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 介绍基于 STM32F407IGT6 芯片在拓维信息 Niobe407 开发板上移植 Op…...

k8s 修炼手册
deployment apiVersion: apps/v1 kind: Deployment metadata:name: hello-deploy spec:replicas: 10selector:matchLabels:app: hello-world # Pod的label # 这个Label与Service的Label筛选器是匹配的revisionHistoryLimit: 5progressDeadlineSeconds: 300minReadySeconds: 10…...

重回1899元,小米这新机太猛了
如果不出意外,距离高通年度旗舰骁龙 8 Gen4 发布还剩下不到一个月时间。 对于以小米 15 为首即将到来的下半年各家旗舰机型厮杀画面,讲道理小忆早已是备好瓜子儿摆上果盘翘首以盼了。 不过在这之前,中端主流选手们表示有话要说:为…...

jmeter本身常用性能优化方法
一、常用配置: 修改Jmeter.bat文件,调整JVM参数(修改jmeter本身的最小最大堆内存),默认都是1个G set HEAP-Xms5g -Xmx5g -XX:MaxMetaspaceSize256m我的本机内存是8G,那最大可以设置870%(本机内存的70%) 这里我设置的5g 如果有…...

Vue3中el-table组件实现分页,多选以及回显
el-table组件实现分页,多选以及回显 需求思路1、实现分页多选并保存上一页的选择2、记录当前选择的数据3、默认数据的回显 完整代码 需求 使用 dialog 显示 table,同时关闭时销毁el-table 表格多选回显已选择的表格数据,分页来回切换依然正确…...

柯桥韩语学校|韩语每日一词打卡:회갑연[회가변]【名词】花甲宴
今日一词:회갑연 韩语每日一词打卡:회갑연[회가변]【名词】花甲宴 原文:인구 노령화에 따라서 요즘 회갑연보다는 고희연을 더 많이 지냅니다. 意思:随着人口老龄化,最近比起花甲宴,更多人办古稀宴。 【原文分解】 1、인구[인구]…...

python概述
目录 python语言的特点 python语言的优点: python语言的缺点: 1.常用的python编辑器 PyCharm Jupyter Notebook VScode 模块的安装、导入与使用 安装 导入与使用 python语言的特点 1.简洁 2.语法优美 3.简单易学 4.开源:用户可自…...

使用celery+Redis+flask-mail发送邮箱验证码
Celery是一个分布式任务队列,它可以让你异步处理任务,例如发送邮件、图片处理、数据分析等。 在项目中和celery 有关系的文件如下: task.py : 创建celery.py 对象,并且添加任务,和app绑定,注意࿱…...

【第十四章:Sentosa_DSML社区版-机器学习之时间序列】
目录 【第十四章:Sentosa_DSML社区版-机器学习时间序列】 14.1 ARIMAX 14.2 ARIMA 14.3 HoltWinters 14.4 一次指数平滑预测 14.5 二次指数平滑预测 【第十四章:Sentosa_DSML社区版-机器学习时间序列】 14.1 ARIMAX 1.算子介绍 考虑其他序列对一…...

Vue3.X + SpringBoot小程序 | AI大模型项目 | 饮食陪伴官
gitee平台源码 github平台源码 饮食陪伴师是一个管理饮食的原生大模型小程序,优势: 精确营养监控:用户记录饮食后,我们会计算出食用的营养成分与分量,并反馈给用户。饮食建议有效:大模型经过我们训练具备大…...

【C++】检测TCP链接超时——时间轮组件设计
目录 引言 时间轮思想 设计的核心思路 完整代码 组件接口 个人主页:东洛的克莱斯韦克-CSDN博客 引言 对于高并发的服务器来说,链接是一种比较珍贵的资源,对不活跃的链接应该及时释放。判断连接是否活跃的策略是——在给定的时间内&#…...

中国新媒体联盟与中运律师事务所 建立战略合作伙伴关系
2024年9月27日,中国新媒体联盟与中运律师事务所举行战略合作协议签字仪式。中国新媒体联盟主任兼中国社会新闻网主编、中法新闻法制网运营中心主任左新发,中运律师事务所高级顾问刘学伟代表双方单位签字。 中国新媒体联盟是由央视微电影中文频道联合多家…...

【ArcGIS微课1000例】0121:面状数据共享边的修改方法
文章目录 一、共享边概述二、快速的修改办法1. 整形共享边2. 修改边3. 概化边缘一、共享边概述 面状数据共享边指的是两个或多个面状数据(如多边形)共同拥有的边界。在地理信息系统(GIS)、三维建模、大数据分析等领域,面状数据共享边是描述面状空间数据拓扑关系的重要组成…...

图论(dfs系列) 9/27
一、二维网格图中探测环 题意: 给定一个二维数组grid,如果二维数组中存在一个环,处于环上的值都是相同的。返回true;如果不存在就返回false; 思路: 在以往的dfs搜索中,都是往四个方向去dfs;但是在这一道…...

如何在Windows上安装Docker
在 Windows 上使用 Docker 有两种主要方式:通过 Docker Desktop 安装并使用 WSL 2 作为后端,或者直接在 WSL 2 中安装 Docker。这里推荐手残党直接用图形界面安装到WSL 2的后端: 一、启用Hyper-V和容器特性 1. 右键Windows点击应用和功能 …...

golang格式化输入输出
fmt包使用类似于C的printf和scanf的函数实现格式化I/O 1输出格式化 一般的: 动词效果解释%v[1 -23 3]、[1 -23 3]、&{sdlkjf 23}以默认格式显示的值,与bool(%t)、int, int8 etc(%d)、uint, uint8 et…...

Jenkins基于tag的构建
文章目录 Jenkins参数化构建设置设置gitlab tag在工程中维护构建的版本按指定tag的版本启动服务 Jenkins参数化构建设置 选择参数化构建: 在gradle构建之前,增加执行shell的步骤: 把新增的shell框挪到gradle构建之前, 最后保存 …...

性能设计模式
class Singleton { public: static Singleton& getInstance() {static Singleton instance; // 局部静态变量return instance; } private:Singleton() {}Singleton(const Singleton&) delete; // 禁止拷贝Singleton& operator(const Singleton&) delete; // …...

Android 热点分享二维码功能简单介绍
Android 热点分享二维码 文章目录 Android 热点分享二维码一、前言二、热点二维码1、热点分享的字符串2、代码中热点字符串拼接和设置示例3、一个图片示例 三、其他1、Android 热点分享二维码小结2、Android11 设置默认热点名称和热点密码、密码长度 一、前言 比较新的Android…...

SIEM之王,能否克服创新者的窘境?
《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…...

(JAVA)浅尝关于 “栈” 数据结构
1. 栈的概述: 1.1 生活中的栈 存储货物或供旅客住宿的地方,可引申为仓库、中转站。例如酒店,在古时候叫客栈,是供旅客休息的地方,旅客可以进客栈休息,休息完毕后就离开客栈 1.2计算机中的栈 将生活中的…...

【前端】ES13:ES13新特性
文章目录 1 类新增特性1.1 私有属性和方法1.2 静态成员的私有属性和方法1.3 静态代码块1.4 使用in来判断某个对象是否拥有某个私有属性 2 支持在最外层写await3 at函数来索引元素4 正则匹配的开始和结束索引5 findLast() 和 findLastIndex() 函数6 Error对象的Cause属性 1 类新…...

vuepress 浏览器加载缓存,总是显示旧页面,无法自动刷新数据的解决方法
vuepress 采用多页面形式,每个md文件在打包时,都会被转为一个html页面;而浏览器默认会缓存页面,导致更新的页面必须手动刷新才行 对于更新较为频繁的文档 全局可在config.js里设置 参考文档: https://vuepress.github.io/zh/ref…...

如何使用代理IP解决反爬虫问题
在网络爬虫的世界里,反爬虫机制就像是守卫城池的士兵,时刻准备着抵御外来的“入侵者”。为了突破这些守卫,代理IP就像是你的隐形斗篷,帮助你在网络世界中自由穿梭。今天,我们就来聊聊如何使用代理IP解决反爬虫问题。 …...

QT学习笔记之绘图
或许有人会等你到天黑,但是你不该在天黑后再找他(她)。 1.绘图事件 在ui文件中添加一个按钮,同时在资源文件中添加一个名字为1.jpg的图片。 widget.cpp #include "widget.h" #include "ui_widget.h" #incl…...