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

news2024/11/15 5:50:30

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: web
    image: myos:httpd
    lifecycle:
      postStart:
        exec:
          command:
          - sh
          - -c
          - |
             xxxxx
      preStop:
              exec:
          command:
          - sh
          - -c
          - |
             xxxxx

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

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

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

相关文章

DataX实战:从MongoDB到MySQL的数据迁移--修改源码并测试打包

在现代数据驱动的业务环境中,数据迁移和集成是常见的需求。DataX,作为阿里云开源的数据集成工具,提供了强大的数据同步能力,支持多种数据源和目标端。本文将介绍如何使用DataX将数据从MongoDB迁移到MySQL。 环境准备 安装MongoDB…

从0新建一个微信小程序实现一个简单跳转

首先 1.从这里下载开发工具 https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/getstart.htm 2. 等下载完毕后 创建一个空白项目 在pages目录下右键创建一个page : testUI,这时候会生成四个文件 新建一个文件夹 testUI 给他们放一起 3.增加一个按钮 …

实战OpenCV之图像滤波

基础入门 图像滤波是数字图像处理中一种非常重要的技术,主要用于图像噪声去除、图像平滑、突出图像特征,或者进行图像风格的转换。它通过数学运算对图像中的像素值进行修改,以达到特定的处理目的。图像滤波可以分为两大类,分别为&…

matlab划分区域的等高线云图(代码)

出图结果如下: 代码如下,按需修改 clear;clc; numRows100; %数据区域,步长,步数 numCols100; ax-2;bx2; ay-2;by2; hx(bx-ax)/numCols; hy(by-ay)/numRows; XXCax:hx:bx; %坐标阵,data Y…

Ubuntu磁盘不足扩容

1.问题 Ubuntu磁盘不足扩容 2.解决方法 安装一下 sudo apt-get install gpartedsudo gparted

如何使用 Bittly 为基于 HTTP 的 API 快速创建 UI 操作界面

在开发 Web 应用或服务时,通常会提供不同数量的 API 接口给客户端或其他第三方使用, 当 API 数量达到一定数量的时候,在处理接口间的调用链以及参数关系时就会变得异常麻烦。 在这种情况下便可通过 Bittly 的面板功能将这些 API 结构进行组装…

vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deac…

洛谷-P5461 赦免战俘(Java递归)

题目背景 借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了! 题目描述 样例 #1 样例输入 #1 3样例输出 #1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1…

【机器学习】过拟合与欠拟合——如何优化模型性能

【机器学习】过拟合与欠拟合——如何优化模型性能 1. 引言 在机器学习中,模型的表现不仅依赖于算法的选择,还依赖于模型对数据的拟合情况。过拟合(Overfitting)和欠拟合(Underfitting)是模型训练过程中常…

黑马智数Day4-1

新增月卡 配置路由完成跳转 {path: /cardAdd,component: () > import(/views/car/car-card/add-card) }<el-button type"primary" click"$router.push(/cardAdd)">添加月卡</el-button> 车辆信息表单验证 <el-form :model"carInf…

自定义安装WSL和WSL迁移到指定位置

安装 WSL 到指定磁盘 配置环境 打开控制面板&#xff0c;找到程序–>右击启用或关闭Windows功能 向下滑动&#xff0c;找到“适用于Linux的Windows子系统”和“虚拟机平台”两个选项&#xff0c;勾选上&#xff0c;然后重启电脑 安装Ubuntu20.04 1. 下载发行版 打开链接…

全能通人工智能的能力评估框架-Levels of AGI: Operationalizing Progress on the Path to AGI

译自’Levels of AGI: Operationalizing Progress on the Path to AGI’&#xff0c;有所删节.笔者能力有限&#xff0c;敬请勘误。 摘要 Google DeepMind提出一种针对通用人工智能 (Artificial General Intelligence, 简称AGI) 框架&#xff0c;该框架用于评估AGI的模型及早期…

CAPL—on signal到底该怎么玩?

总结&#xff1a;一个前提&#xff0c;两种形式&#xff0c;一个注意&#xff0c;外加一个很不常用的知识点 1&#xff1a;一个前提&#xff1a;必须是DBC或其他数据库文件中定义的信号&#xff0c;且这个数据库已经添加到工程中去了。 2&#xff1a;使用格式 on signal&…

如何修改音频的音量增益

一、前言 在开发音频相关的功能&#xff08;比如说语音通话、播放音乐&#xff09;时&#xff0c;经常会遇到音量太小的问题&#xff0c;这时候就需要我们对原始数据进行处理。本文将介绍如何通过修改原始音频数据来增加增益&#xff0c;本文包含如下内容&#xff1a; 1.音频数…

3D Slicer医学图像全自动AI分割组合拳-MONAIAuto3DSeg扩展

3D Slicer医学图像全自动AI分割组合拳-MONAIAuto3DSeg扩展 1 官网下载最新3D Slicer image computing platform | 3D Slicer 版本5.7 2 安装torch依赖包&#xff1a; 2.1 进入安装目录C:\Users\wangzhenlin\AppData\Local\slicer.org\Slicer 5.7.0-2024-09-21\bin&#xff0…

PostgreSQL技术内幕12:PostgreSQL事务原理解析-锁管理

0.简介 本文介绍PG中的锁技术&#xff0c;主要包括PG中两阶段锁的介绍和PG中各种不同级别的锁&#xff0c;死锁问题介绍&#xff0c;以及如何去查看锁。 1.PG中两阶段锁 1.1 需要锁机制的原因 PG中的隔离性是通过MVCC和两阶段锁实现的&#xff0c;有了MVCC为什么还要使用悲…

python全栈学习记录(十八)re、os和sys、subprocess

re、os和sys、subprocess 文章目录 re、os和sys、subprocess一、re1.正则字符2.正则表达式的使用3.group的使用4.贪婪匹配与惰性匹配5.其他注意事项 二、os和sys1.os2.sys 三、subprocess四、打印进度条 一、re python中的re模块用来使用正则表达式&#xff0c;正则就是用一系…

基于Springboot企业员工人事管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

研一上课计划2024/9/23有感

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、需要认真上课的1.应用数理统计&#xff08;开卷考试&#xff09;2.最优化方法&#xff08;开卷考试&#xff09;3.跨文化交际&#xff08;主题演讲20课堂讨…

基于SpringBoot和Vue的餐饮管理系统

基于springbootvue实现的餐饮管理系统 &#xff08;源码L文ppt&#xff09;4-078 第4章 系统设计 4.1 总体功能设计 一般个人用户和管理者都需要登录才能进入餐饮管理系统&#xff0c;使用者登录时会在后台判断使用的权限类型&#xff0c;包括一般使用者和管理者,一…