k8s学习笔记(一)
configMap
一般用来存储配置信息
创建configMap
从文件中获取信息创建:kubectl create configmap my-config --from-file=/tmp/k8s/user.txt
直接指定信息:
kubectl create configmap my-config01 --from-literal=key1=config1 --from-literal=key2=config2
ymal文件创建
ConfigMap的使用
为什么使用: 1,复用配置文件,可以启动多个nginx的pod,共同使用同一个pod
2,便于修改,维护
如何使用:
1 将ConfigMap中的数据设置为容器的环境变量
定义configmap
kubectl create configmap my-config05 --from-literal=key1=123
2 configmap挂载
案例将名为my-config的cm挂载到pod中的/etc/config目录下,可以进入容器查看
注意:subPath: nginx.cong #如果mountPath挂载目录之前有数据,需要在下面加上subPath,表示不会覆盖原有数据。换句话说就是指定某个文件挂载,而不是挂载全部
secret
与configmap类似
探针
种类
livenessProbe
readynessProbe
startupProbe(1.16新引入)
探测方法
ExecAction(执行命令,正确返回0,错误返回非0)、
HttpGet(访问htttp页面,正确则显示正常,错误则会在svc中的endpoints中删除对应的pod,直至下次检查成功
TcpSocket: 通过TCP 连接来检查容器的状态。它通常用于检查容器内部的 TCP 服务是否可以正常连接。
livenessProbe
exec
[root@master day07]# cat liveness-exec.yml
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec-001
spec:
containers:
- name: liveness
image: nginx
args: #定义容器启动时执行的命令
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
livenessProbe: #指定livess检查
exec: #指定检查方式为执行命令
command:
- cat
- /tmp/healthy #命令成功返回0,失败返回非0,并杀死,重启
initialDelaySeconds: 5 #在容器启动后多久开始进行首次 liveness 检查,这里是 5 秒
periodSeconds: 5 #定义 liveness 检查的执行周期,每隔 5 秒钟执行一次。
pod状态为running时,此时exec进入pod中删除/usr/nginx/html/下面的index.html,使用describe 查看pod状态会显示错误,过一会重启后有显示正常(重启pod会自动创建新的container,index.htm存在)
tcpsocket
[root@master day07]# cat liveness-tcp.yml
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: nginx
ports:
- containerPort: 80
livenessProbe:
tcpSocket:
port: 88 #定义检查端口88是否可用15s后检测失败,容器重启
initialDelaySeconds: 15
periodSeconds: 20
rc
(ReplicationController),老版本使用,将来(1.6版本)被禁用,不支持热更新
ReplicationController 确保在任何时候都有特定数量的 Pod 副本处于运行状态。 换句话说,ReplicationController 确保一个 Pod 或一组同类的 Pod 总是可用的。
RC通过spec.replicas
字段设置期望的Pod副本数,并通过spec.template
定义Pod的模板,包括容器和标签等信息,它不支持滚动更新或灰度发布
首先通过rc创建三个pod,基于nginx镜像,标签lables为app=nginx,副本数为3
查看pod状态
删除pod,测试rc是否可以维持pod个数
再次查看pod
发现pod数量不变,但是IP和node节点发生变化
rs
(replicasets)
相当于是rc的升级
RC通过spec.replicas
字段设置期望的Pod副本数,并通过spec.template
定义Pod的模板,包括容器和标签等信息
deployment
实际上是对rs的封装和升级,通过 ReplicaSet 来管理 Pod 的副本集。
供了对Pod副本集部署和更新的声明式配置,支持滚动更新、回滚和版本控制等功能
Deployment通过spec.replicas
字段设置期望的Pod副本数,并通过spec.template
定义Pod的模板,与RC和RS类似。不同之处在于,Deployment还支持spec.strategy
字段,用于定义更新策略,例如滚动更新的速率和暂停条件,
其中deployment.spec.strategy.rollingUpdate下的两个重参数
maxSurge:在滚动更新期间可以创建的额外的 Pod 的最大数量或百分比,可以是一个值或百分比
maxUnavailable:滚动更新期间可以创建的额外的 Pod 的最大数量或百分比,值或百分比
deploy的更新与回滚
更新
原理,通过修改image的版本不同,curl -I ip:端口显示的nginx版本不同
查看pod创建情况,这里的镜像版本为最新
测试版本,版本为1.21.5
版本的回滚,指定版本为1.16.1
直接vim编辑配置文件修改即可
把image: nginx修改为image: nginx1.16.1,保存退出
kubectl apply -f deploy-pod.yml
此时再次测试,实现通过deployment回滚版本
版本升级与回滚类似,vim修改镜像版本即可,完成后保存退出
执行kubectl apply -f deploy-pod.yml
service
service有4中类型 ExternalName, ClusterIP, NodePort, and LoadBalancer,默认为Cluster,配置好之后只能在k8s集群内部访问,NodePort可以在集群外部访问
NodePort
此时可以在浏览器上输入192.168.199.149:32054,成功访问nginx,150,151也可以
ClusterIP
创建service
kubectl apply -f service.yml
查看svc
服务发现
service会自动通过lables发现可用的pod节点,并把节点的ip加入到endps列表中
查看svc的endpoint,把符合条件的三个pod加入到列表中
删除pod,测试service是否能自动发现新创建的pod
查看endpoints,发现service的自动发现服务正常
负载均衡
查看pod情况
为了测试负载均衡,这里修改nginx服务的html配置文件,以达到负载均衡效果
查看service
测试负载均衡
相关文章:

k8s学习笔记(一)
configMap 一般用来存储配置信息 创建configMap 从文件中获取信息创建:kubectl create configmap my-config --from-file/tmp/k8s/user.txt 直接指定信息: kubectl create configmap my-config01 --from-literalkey1config1 --from-literalkey2confi…...
自学前端——JavaScript篇
JavaScript 什么是JavsScript JavaScript是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果,增加用户与网页的交互性。 作为一种客户端语言,JavaScript可以直接嵌入HTML,并在浏览器中执行。 与HTML和CSS不…...
高考毕业季--浅谈自己感想
随着2024年高考落幕,数百万高三学生又将面临人生中的重要抉择:选择大学专业。在这个关键节点,计算机相关专业是否仍是“万金油”的选择?在过去很长一段时间里,计算机科学与技术、人工智能、网络安全、软件工程等专业一…...

遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程
遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程 在遥感影像上人工制作分类数据集采用python+gdal库制作数据集挑选分类模型(RF、KNN、SVM、逻辑回归)选择随机森林模型建模分类遥感图像预测在遥感影像上人工制作分类数据集 1.新建shp文件 地理坐标系保持和影像…...
【Android面试八股文】Kotlin内置标准函数let的原理是什么?
确实,let 函数在 Kotlin 中被广泛使用,特别是在处理可空类型或者需要在对象上执行一系列操作后返回结果的场景中非常有用。 let 函数的源代码 /*** Calls the specified function [block] with `this` value as its argument and returns its result.** For detailed usage i…...
网工面试总结1
网工还是要基本会ACL、ISIS、OSPF、MPLS、QOS、GVRP、VRRP、FW、BGP、STP、IV4\6、WLAN、路由策略、策略路由、LACP等都或多或少要知道,常见的哪怕没有实战,要在ensp、cisco中练过! OSPF邻居故障,你认为是哪些原因?或者…...

[stm32]密码锁
[stm32]密码锁 需要资料的请在文章末尾获取~ 01描述 使用原件:stm32f103c8t6最小系统板x1,0.96寸OLED显示屏四角x1,4x4矩阵按键x1; 键位对应图: 1, 2, 3, 4------------- 1 2 3 4 5&am…...
优化yarn在任务执行时核数把控不准确的问题
核数不准这个事情是个概率问题,如果你碰见了,只能说你有点非欧,本质上是因为集群配置问题,默认时yarn不会去精准把控任务的核数,因为默认的资源计算方式是用实际内存去估算核数,这就导致如果大家配置任务时…...

2024年,收付通申请开通流程
大家好,今天咱们来聊聊关于APP场景中开通微信收付通的一些实用小窍门。在如今的移动互联网时代,很多商家都选择通过APP来提供服务和产品,因此如何在APP中顺利集成微信收付通功能,让用户能够轻松完成支付,就显得尤为重要…...

Django使用django-apscheduler实现定时任务
定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。 我在这里使用的 django-apscheduler库来实现定时任务。 一、安装 django-apscheduler pip install django-apscheduler二、在项目的setting.py…...
python数据分析:修改数据
在 Python 中进行数据分析时,通常使用 pandas 库来处理和修改数据。以下是一个完整的示例,展示如何使用 pandas 库读取数据、修改数据并保存结果。 1. 安装并导入必要的库 首先,确保你已经安装了 pandas 库。如果没有安装,可以使…...

【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)
热门高效的免费实用类API是当今开发者们追逐的宝藏。这些API提供了各种热门功能和服务,能够帮助开发者轻松地为应用程序增添实用性和吸引力。无论是人脸识别、自然语言处理、机器学习还是图像处理,这些热门高效的免费API提供了强大的功能和高效的性能&am…...
日语 11 12
11. 若者の意識 わかもの いしき 新作 新作 新作 新作 新作 しんさく 公開 公開 公開 公開 公開 こうかい 映像 映像 映像 映像 映像 えいぞう 人気 人気 人気 人気 人気 にんき 来週 来週 来週 来週 来週 らいしゅう 外国 外国 外国 外国 外…...

STM32程序启动过程
(1)首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向量表,其第一个表项是栈顶地址(32位),第二个表项是复位中断服务入口地址; (2)然后执行复位中断&…...

天才简史——Diederik P. Kingma与他的Adam优化器
一、了解Diederik P. Kingma 发生日期:2024年6月18日 前几日,与实验室同门一同前往七食堂吃饭。饭间,一位做随机优化的同门说他看过一篇被引18w的文章。随后,我表示不信,说你不会数错了吧,能有1.8w次被引都…...

两个src案例分享
案例一 文前废话:某天正在刷着**社区的帖子,欣赏着漂亮的小姐姐,突然间评论区的一条评论引起了我的注意,类似于下面这样 这种评论在html标签中代码格式是<a>这是文字</a>这样的 同时评论区XSS漏洞的高发区,想着可能会有操作点 一、发布一个标题有js语句的贴子 二…...

宕机了, redis如何保证数据不丢?
前言 如果有人问你:"你会把 Redis 用在什么业务场景下?" 我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。…...

太速科技-基于XCVU9P+ C6678的100G光纤的加速卡
基于XCVU9P C6678的100G光纤的加速卡 一、板卡概述 二、技术指标 • 板卡为自定义结构,板卡大小332mmx260mm; • FPGA采用Xilinx Virtex UltralSCALE 系列芯片 XCVU9P; • FPGA挂载4组FMC HPC 连接器; • 板载4路QSPF,每路数据速…...

Maven:一个下载jar依赖失败的问题解决方案
内部的一个jar包已经上传到了私服上,在私服管理端也能看到该jar包的完整信息,但是springboot项目引入该jar包发现死活下载不下来,报错如图: 从该错误信息中可以看到,找不到服务名是xxl-job这个的,我们要找的…...
Java 枚举的基本使用
一、枚举的概述 java 枚举(Enum)是一种特殊的数据类型,它允许你定义一组命名的常量。在 Java 中,枚举被实现为类,并且继承自 java.lang.Enum 类。枚举的使用可以提供类型安全、可读性强、易于理解的代码。 (1) 枚举的…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...