k8s中,pod生命周期,初始化容器,容器探针,事件处理函数,理解其设计思路及作用

k8s中,为什么要设计pod

平台直接管理容器不是挺好的吗

为什么要以pod为单位进行管理,

然后把容器放在pod里面

那么有pod和没pod的区别是什么

也就是pod提供了什么作用

这个可以考虑从pod生命周期管理的角度去思考

如图,pod主容器在运行之前,会有一个initcontainer,就是初始化容器。

初始化容器的作用是什么?

比如主容器运行的服务需要连接到数据库才能运行

那么在pod里面写一个initcontainer来确保数据库可以连接上,

才能启动主容器maincontainer

initcontainer里面用busybox镜像,自定义嵌入式脚本command、args、- -c、 - |

命令里面写对于数据库连接的测试,只有连接成功,初始化容器

才算running

初始化容器running

主容器才启动

这个从外观上来讲,相当于多容器pod

从逻辑上来讲,初始化容器的启动是主容器启动的必要条件

初始化容器启动了,才启动主容器。

这个对于服务的依赖的解决来讲,几乎是必要的。

还有主容器挂载pvc卷的时候,

需要指定挂载目录

而这个目录是需要创建好的

如果不用初始化容器

就需要管理员手工创建

而pod调度到哪个节点上,又是自动化调度

如果管理员需要找到对应的节点

再去创建,比较繁琐,不自动化。

把这个挂载的目录

在pod的资源文件里面

写一个initcontainer初始化容器

用busybox镜像,加自定义脚本,创建好目录

那么pod在哪个节点上,这个initcontainer作为主容器的依赖容器,会在主容器

启动之前把目录创建好,就很自动化。

另外,如果restartPolicy设置为Never,不让容器重启

那么,如果initcontainer启动失败了,整个pod也就不再重启,就报错

初始化容器可以有多个

初始化容器的镜像可以和主容器不同

初始化容器执行完自定义命令之后,会退出,不会一直运行

初始化容器退出的时候,会有个退出码,如果非零,那么意味着异常,就需要排查

如果初始化容器退出正常,主容器才会运行。

说白了,初始化容器,就是主容器运行的必要条件。

这个必要条件,可以是数据库,可以是目录创建,可以是各种自定义检测脚本

-------------------------------------------------------------------------------

什么是容器探针?

是容器的健康检查

由谁来检查?

由kubelet

检查哪几个方面?

三个

startupProbe        启动了没

livenessProbe      运行着没

readinessProbe    准备好接收服务请求了没

这个健康检测,拿汽车的年审来比喻

就像是

车能打着吗

车能跑吗

车能坐乘客吗,空调、座椅、安全带、后视镜、转向灯、雨刮器、车载wifi、音乐播放器、香氛、氛围灯,这些都准备好了没,准备好了才可以开始。

那么

startupProbe就是检查发动机能否启动

livenessProbe就是检查车能否上路跑

readinessProbe就是检查提供服务需要的方方面面都准备好了没

startupProbe从字面意思看,就是容器启动了没

那么怎么看容器启动了没,比如容器运行的服务,有端口号

那么用tcpSocket的方式访问这个端口号能不能访问到,能的话,startupProbe就是

success的,不能就是failure,不知道就是unknown

unknown的情况一般应该是网络的问题

livenessProbe从字面意思看,就是在线没,转着没,容器跑着没有

怎么看是否在线,用httpGet的方式去访问端口号加路径,如果状态码是200-400

就是success的,不是就failure,不知道就unknown

readinessProbe从字面意思看,就是准备好了没

怎么知道准备好了没?用exec自定义执行命令的方式,去检测

比如,检测某个文件的版本是否大于2,如果大于,

那就success,不是就failure,不知道就unknown

比如web服务,版本需要大于2,不大于2就不ready

那么这里面的

success  

failure

unknown

就是

容器探针的三种检测结果

tcpSocket

httpGet

exec

还有一个gPRC,

就是

容器探针检测的四种方法

gRPC是谷歌远程过程调用,检测自己开发的程序和返回状态。

startupProbe    

livenessProbe

readinessProbe

就是

容器探针检测的三个检测方面

可以这么理解,

容器探针,343,总共十个要素,

3个检测方面

4种检测方法

3种检测结果

------------------------------------------------------------------------

事件处理函数,也叫钩子函数

一个是postStart,就是已经开始了,但是也才刚刚开始,

就是主容器启动后干点啥,

比如要去参加聚会,要喝酒,已经坐上车了,在去参加聚合的路上了

甚至是,已经到达聚会的地方了,开始喝酒前,先喝瓶牛奶

这个叫postStart

比如主容器干活之前,先注册一下服务,告诉注册中心,说我来了,

就叫postStart

第二个钩子函数是preStop

也就是主容器结束之前干点啥

还是拿聚会举例,比如大家喝完酒了,也聊得很开心,要散场了

参加聚合的人,有的是开车来参加的,返程的时候就要叫个代驾

拿出手机,叫代驾的操作,就是preStop

也可以说是,在返程之前,跟还在聚会地方的朋友打声招呼,说一下

这个过程,也可以叫preStop

在主容器干完活了,准备休息了,会告诉注册中心,说先下线了。

这个叫preStop

---------------------------------------------------------------------

那么总的来说

如图

pod的生命周期中,除了主容器

还包括

初始化容器

容器探针

钩子函数

这三个要素

这些是可选项

运用好这些可选项,

可以让k8s集群,

更加自动化,实时监控化,可定制化。

如果没有pod,

那么可能这些功能不容易实现

因为这些都是在pod的生命周期的不同阶段进行的。

kubelet是这些行为的经理

看着这些动作

如果有问题,

就调用资源处理,

同时把情况传递给数据库。

如果运行ok,没问题,

就继续保障着这些服务

同时把运行ok的情况

也传递给数据库。

pod的生命周期,从这个角度看,作用比较大。

事件处理函数

--- 
kind: Pod
apiVersion: v1
metadata:name: web5
spec:containers:- name: webimage: myos:httpdlifecycle:postStart:exec:command:- sh- -c- |
             xxxxxpreStop:exec:command:- sh- -c- |
             xxxxx

exec探测方法用的更一些使用嵌入式脚本

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

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

相关文章

无限大薄板的电场

单块无限大薄板两端的电场 单块无限大的薄板,如果上面带有均匀分布的电荷,就会在薄板的两侧产生电场,电场大小与距离平板的位置无关,方向与平板垂直,如果平板带正电荷,则电场方向向外指向两侧,…

【性能优化】低配starRocks常驻内存优化

背景说明 由于服务器的实际资源小于starRocks官方的配置,导致starRocks在无任务的情况下,常驻内存偏高,可用于查询的资源变小。 官方文档 实际部署的集群一般是4C8G和8C16G,be的配置不达标 为了解决单次查询内存不足的问题&…

史上最详细论文word排版格式指导保姆级教学!

一、前言 首先,每个学校的论文排版格式都是不太相同的,但大体上都是相似的。 正常来说,论文的排版操作是十分枯燥并且重复的,但是word中的样式工具使得论文排版会变得容易。 接下来我将以某个学校论文格式要求为例,…

python socket编程

socket socket(套接字)是进程间通信的工具,好比现实生活中的插座,所有家电想要工作都是基于插座进行,进程之间想要进行网络通信需要socket socket负责进程之间的网络数据传输,好比数据的搬运工 2个进程之…

动态规划入门题目->使用最小费用爬楼梯

1.题目: 2.解析: 做题模式: 步骤一:找状态转移方程 步骤二:初始化 步三:填表 步骤四:返回-> dp[n] dp[i]表示到达 i 位置最小花费 逻辑:要爬到楼顶先找到 i 位置 , 要…

高通Android 12 push framework.jar和service.jar

1、Android framework.jar和service.jar替换注意事项 2、单编 adb push service.jar脚本 如下 adb root adb disable-verity adb remountadb push services.jar system/framework adb push services.jar.prof system/framework adb push oat/arm64/services.art /system/fram…

SpringBoot日志集成-LogBack

Log4J:最早的Java日志框架之一,由Apache基金会发起,提供灵活而强大的日志记录机制JDK自带的日志框架:java.util.logging.Logg,是JDK1.4之后提供的日志API,已淘汰logback: logback一个开源的日志…

delphi制作漂亮的农历窗体(IntraWeb+Layui的完美结合)

delphi制作漂亮的农历窗体(IntraWebLayui的完美结合) 不需要安装服务器,Apache和IIS都不需要,自带企业级服务器。 运行exe服务器就架好了,直接打开手机浏览器或者电脑浏览器,网页就出来了,如果…

sqli-lab靶场学习(四)——Less11-14(post方法)

前言 第1-10关都是get方法,本关开始进入post方法。其实post也好get也好,本质都差不多,使用的技巧也基本相同。 Less11 第11关打开是一个输入用户名密码的界面 显然登陆对话框会使用post方式提交,这里我们尝试在Username一栏通过…

时序预测 | Python实现KAN+LSTM时间序列预测

时序预测 | Python实现KAN+LSTM时间序列预测 目录 时序预测 | Python实现KAN+LSTM时间序列预测预测效果基本介绍程序设计预测效果 基本介绍 时序预测 | KAN+LSTM时间序列预测(Python) KAN作为这两年最新提出的机制,目前很少人用,很适合作为时间序列预测的创新点,可以结合…

CSS01-语法规范、基础选择器

一、CSS语法规范 示例: 二、CSS的基础选择器 选择器(选择符)就是根据不同需求把不同的标签选出来这就是选择器的作用。 简单来说,就是选择标签用的。 选择器的分类: 1、标签选择器 2、类选择器(开发最常用) 长字符命名…

误差不到1毫米的WGS84与CGCS2000坐标转换工具

我们在《WGS84与CGCS2000坐标的精密转换方法》一文中为你分享了一个WGS84与CGCS2000坐标的精密转换纯理论性的方法。 现在,再为你分享一个据说是误差不到1毫米的WGS84与CGCS2000坐标的转换工具,请从文末查看该工具的领取方法。 WGS84与CGCS2000坐标转换…

信息学奥赛的最佳启蒙阶段是小学还是初中?

信息学奥赛(NOI)近年来越来越受家长和学生的关注,尤其是在编程教育不断升温的背景下,信息学竞赛成为了许多家庭的教育选择之一。家长们往往关心的是:孩子应该在什么年龄段开始接触信息学竞赛,才能打下坚实的…

如何让 Android 的前端页面像 iOS 一样“优雅”?

作者:方英杰(崇之) 最近在调研前端页面适配 Android 端异形屏的方案,调研过程中发现了一些比较有意思的点,本文主要是做一个总结。 一、提出问题 首先,我们需要知道 Android 上的前端适配面临着什么问题。 问题其实很…

台式机通过笔记本上网

概述: ①将wifi共享给网口 ②网口配置成自协商IP和DNS即可 一、背景 由于台式机只有网口,没得wifi网卡,因此想通过笔记本连wifi,再通过网线将笔记本和台式机连接起来,从而实现台式机通过笔记本的wifi上网,即让笔记本当台式机的…

实现org.springframework.beans.factory.InitializingBean 接口--初始化bean

1、案例 import com.dzwl.easy.report.core.service.IUserDescService; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;Component public c…

大厂太卷了!又一款一站式AI短剧创作神器,这套AI工作流厉害了:自动生成脚本、角色、分镜、视频、音乐、字幕...(附保姆级教程)

大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 行业在卷 AI 应用,而美图已经在卷 AI 工作流了………

【SpringBoot详细教程】-05-整合Druid操作数据库【持续更新】

文末看往期系列教程:给个关注可好? 🌲 SpringData简介 对于数据访问层,无论是 SQL (关系型数据库) 还是 NoSql (非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理。 Spring Boot 底层都是采…

VS Code激活python虚拟环境常见报错

VS Code激活python虚拟环境常见报错 问题1:执行激活 activate 报错 问题1:执行激活 activate 报错 解决: Win X *执行 set-executionpolicy remotesigned 再输入 Y

CrossOver24支持的游戏有那些

CrossOver刚刚更新了24版本,支持《地平线零之曙光》、《以撒的结合:重生》等游戏。一起来看看它有哪些更新吧! 一、功能优化 - 更新 Wine 至最新的稳定版 Wine 9.0,引入了 7000多个更新和针对各种软件游戏的优化。 - 更新 Wine M…