k8s中的容器探针
pod的容器健康检查---探针
probe:k8s对容器执行的定期检查,诊断。
探针的三种规则
所有的探针都是针对容器不是针对pod
1、 存活探针---livenessProbe:探测容器是否正常运行。如果发现探测失败,会杀掉容器。容器会根据重启策略来决定是否重启。
2、 流量探针/就绪探针:探测容器是否进入ready状态。并做好接受请求的准备。
检测失败:Ready 0/1表示没有进入Ready状态。但是status还是Running状态实际上资源是不可用的。service也不会把请求转发到这个pod
3、 启动探针:是在容器启动后开始检测。检测容器内的应用是否启动成功。在启动探测成功之前,所有的其他探针都会处于禁用状态。一旦启动探针结束,后续操作不再受启动探针影响。
在一个容器中可以有1个或多个探针。
启动探针:只在容器启动时探测
存活
就绪
probe的检查方法
probe的检测方法三种探针都是通用的
1、 exec探针:在容器中执行命令。如果命令返回码是0表示成功。
应用场景:适用于在容器内自定义检查容器健康状态的情况。
2、 httpGet:对指定IP+端口的容器发送1个httpGet的请求。是通过get请求的响应状态码来判断如果get状态码大于等于200且小于400都表示成功。
应用场景:适用于检测能否响应http的请求。例如:web容器(nginx,tomcat)
3、 tcpSocket:用于检查端口。对指定端口上的容器IP地址进行tcp检查(三次握手),检查对方服务器端口是否打开。如果端口打开则认为探测成功。
应用场景:适用于检查特定容器的端口监听状态。
类似于telnet ip+端口
诊断结果
1、 成功 容器通过了,正常运行
2、 失败 存活探针会重启
3、 未知状态 也是诊断失败。也是根据策略
存活探针
exec方式
实验举例:
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:7name: centosimagePullPolicy: Nevercommand: ["/bin/bash", "-c", "touch /opt/123.txt ; sleep 3600"]livenessProbe:exec:command: ["/usr/bin/test", "-e", "/opt/123.txt"]
#添加检测策略initialDelaySeconds: 3
#表示容器启动之后多少秒进行探测。数值建议不要设置太短。因为容器有启动时间,可能会导致无效探测
#3表示3秒periodSeconds: 2
#表示探针探测的间隔时间。每隔多少秒进行一次检查。根据需求自定义。看应用的延迟敏感度。
#如果应用非常重要是核心组件。可以间隔设置小一点failureThreshold: 2
#表示如果探测失败。失败几次之后把容器标记为不健康。
#2表示2次successThreshold: 1
#表示只要成功1次就标记为就绪。数值固定是1不能修改。根据需求自定义添加。可以不加。timeoutSecond: 1
#表示每一次探测的超时时间。每次探测必须在多少秒之内必须完成探测。
#设置时间必须要小于periodSeconds探测间隔时间。
#根据需求自定义添加,可以不加kubectl describe pod 容器名称
#查看容器的详细信息必要的核心指标:initialDelaySeconds: 3
#表示容器启动之后多少秒进行探测。数值建议不要设置太短。因为容器有启动时间,可能会导致无效探测
#3表示3秒periodSeconds: 2
#表示探针探测的间隔时间。每隔多少秒进行一次检查。根据需求自定义。看应用的延迟敏感度。
#如果应用非常重要是核心组件。可以间隔设置小一点failureThreshold: 2
#表示如果探测失败。失败几次之后把容器标记为不健康。
#2表示2次
liveness杀死容器重启。
所有探针策略会伴随整个pod的生命周期除了启动探针。
httpGet方式
实验举例:
apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: nginx:1.22name: nginx1livenessProbe:httpGet:scheme: HTTP
#如果是默认http则可以不加port: 80initialDelaySeconds: 4periodSeconds: 2
#表示容器启动之后4秒进行探测
#表示每隔2秒检测一次
杀掉容器开始重启
正确示范:
apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:httpGet:scheme: HTTPport: 8080path: /index.jspinitialDelaySeconds: 4periodSeconds: 2
修改为jsp格式测试
tcpSocket方式
实验举例:
apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 4periodSeconds: 2
错误示范:
apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:tcpSocket:port: 8081initialDelaySeconds: 4periodSeconds: 2
总结
存活探针:检测失败后,会杀死容器,然后重启。探针将伴随整个容器的生命周期
1、 exec:相当于执行了一个shell命令。在容器里面执行
shell命令执行成功:返回码是0表示成功。成功1次就是探测成功
2、 httpGet:对web容器发起了一次get请求。可以添加path,指定访问的资源。返回码在大于等于200且小于400的范围之内都算成功。
3、 tcpSocket:相当于telnet,指定的容器监听端口是否打开。是否能和指定的容器监听端口进行通信。
就绪探针
exec方式
实验举例:
apiVersion: v1
kind: Pod
metadata:labels:run: centosname: centos
spec:containers:- image: centos:7name: centoscommand: ["/bin/bash", "-c", "sleep 3600"]readinessProbe:exec:command: ["/usr/bin/test", "-e", "/etc/passwd"]initialDelaySeconds: 4periodSeconds: 2
故障模拟:
这里删除探测的/etc/passwd路径测试
httpGet方式
实验举例:
apiVersion: v1
kind: Pod
metadata:labels:run: tomcat3name: tomcat3
spec:containers:- image: tomcat:8.0.52name: tomcat3readinessProbe:httpGet:scheme: HTTPport: 8080path: /index.jspinitialDelaySeconds: 4periodSeconds: 2
故障模拟:
这里修改tomcat容器的端口测试
tcpSocket方式
实验举例:
apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 4periodSeconds: 2
故障模拟:
这里修改tomcat容器的端口测试
总结
就绪探针(readinessProbe):pod的状态是Running但是pod的状态是notready。这个状态下容器无法提供正常的业务访问。就绪探针不会重启容器。
tcpSocket指示监听容器上的业务端口能否正常通信。如果更改了容器的启动端口。
mysql 3306 33066
tcpSocket---->33066
tcpSocket用于监听指定端口。如果在业务中修改了默认端口。会使用tcpSocket监听业务端口能否正常通信。
存活探针和就绪探针会伴随整个pod的生命周期
apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 4periodSeconds: 2
启动探针
exec方式
apiVersion: v1
kind: Pod
metadata:labels:run: tomcat3name: tomcat3
spec:containers:- image: tomcat:8.0.52name: tomcat3startupProbe:exec:command: ["/usr/bin/test", "-e", "/etc/passwd"]initialDelaySeconds: 4periodSeconds: 2
故障模拟:
这里删除/etc/passwd
heepGet方式
apiVersion: v1
kind: Pod
metadata:labels:run: tomcat3name: tomcat3
spec:containers:- image: tomcat:8.0.52name: tomcat3startupProbe:httpGet:scheme: HTTPport: 8080path: /index.jspinitialDelaySeconds: 4periodSeconds: 2
故障模拟:
这里修改tomcat容器的端口为8081测试
启动探针(startupProbe):如果探测失败。pod的状态是notready状态。启动探针会重启。
总结
启动探针(startupProbe):如果探测失败。pod的状态是notready状态。启动探针会重启。
1、 在1个yaml文件中可以有多个探针。启动、存活、就绪都针对1个容器。
2、 启动探针的优先级是最高的。只有启动探针成功。后续的探针才会执行。
3、 启动探针成功之后。后续除非重启pod。否则不会再触发重启探针。
4、 在pod的生命周期中。伴随pod的一直存在、一直探测的是存活探针和就绪探针。
5、 在pod的生命周期当中,后续的条件满足哪个探针的条件,就会触发哪个探针。
6、 就绪探针:如果不影响容器运行。status是running状态。这个时候不会重启。但是一旦容器退出,就绪探针也会重启。
容器启动和退出时的动作
postStart
postStart:容器启动钩子。容器启动之后触发的条件
preStop
preStop:容器退出钩子。容器退出之后触发的条件
实验举例
apiVersion: v1
kind: Pod
metadata:name: nginx2
spec:containers:- name: nginx2image: centos:7command: ["/bin/bash", "-c", "sleep 3600"]volumeMounts:
#声明容器的挂载卷- name: test1
#定义挂载卷名称
#不同挂载卷的名称不能重复mountPath: /opt
#定义挂载卷位置readOnly: false
#设置当前目录是否可读写
#false表示可读可写lifecycle:postStart:exec:command: ["/bin/bash", "-c", "echo hello from start >> /opt/123.txt ; sleep 10"]preStop:exec:command: ["/bin/bash", "-c", "echo hello from stop >> /opt/123.txt"]volumes:
#声明node节点上和容器内的挂载目录- name: test1
#挂载卷的名称要和挂载的容器内挂载卷名称保持一致hostPath:
#指定和容器的挂载目录path: /opt/test
#声明node节点上和容器内的/opt的挂载目录type: DirectoryOrCreate
#如果在节点上目录不存在则自动创建该目录
启动和退出的作用:
1、 启动可以自定义配置容器内的环境变量。
2、 通知机制。告诉用户容器启动完毕
3、 退出时,可以执行自定义命令。删除或者生成一些必要的程序。自定义销毁方式以及自定义资源回收的方式。以及容器的退出等待时间。
相关文章:
k8s中的容器探针
pod的容器健康检查---探针 probe:k8s对容器执行的定期检查,诊断。 探针的三种规则 所有的探针都是针对容器不是针对pod 1、 存活探针---livenessProbe:探测容器是否正常运行。如果发现探测失败,会杀掉容器。容器会根据重启策略…...
4.6 BOUNDARY CHECKS
我们现在扩展了tile矩阵乘法内核,以处理具有任意宽度的矩阵。扩展必须允许内核正确处理宽度不是tile宽度倍数的矩阵。通过更改图4.14中的示例至33 M、N和P矩阵,图4.18创建了矩阵的宽度为3,不是tile宽度(2)的倍数。图4.…...
Java集合-LinkedList
Java集合-LinkedList 特性 public class LinkedList<E> extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable1、继承于 AbstractSequentialList ,本质上面与继承 AbstractList 没有什么区别…...
2023年阿里云云栖大会:前沿技术发布与未来展望
在2023年的阿里云云栖大会上,我见证了云计算和人工智能领域的又一历史性时刻。这次大会不仅是对未来科技趋势的一次深入探索,更是阿里云技术实力和创新能力的集中展示。 首先,千亿级参数规模的大模型通义千问2.0的发布,无疑将人工…...
houdini microscope
【英文原版-无字幕】Wavelets: a mathematical microscope 小波变换最好的入门教程了吧!_哔哩哔哩_bilibili 只涉及模拟,不模拟具体对错...
Linux_CentOS_7.9配置时区及NTPdate同步之简易记录
前言:ntpdate命令来自英文词组”NTPdate“的拼写,其功能是用于设置日期和时间。ntpdate命令能够基于NTP协议设置Linux系统的本地日期和时间,利用NTP服务的时钟过滤器来选择最优方案,大大提高了可靠性和精度,让系统时间…...
十九:爬虫最终篇-平安银行商城实战
平安银行商场实战 需求 获取该商城商品信息 目标网址 https://m.yqb.com/bank/product-item-50301196.html?mcId1583912328849970&loginModepab&historyy&sceneModem&traceid30187_4dXJVel1iop详细步骤 1、寻找数据接口 2、对比payload寻找可疑参数 3、多…...
解决vcruntime140_1.dll无法继续执行代码的方法,一键修复dll文件丢失问题。
vcruntime140_1.dll是Windows操作系统中的一个重要的动态链接库文件,它与Microsoft Visual C Redistributable相关联。电脑出现关于vcruntime140_1.dll无法继续执行代码的错误弹窗是就意味着这个文件在电脑中被破坏导致丢失了,这将会影响一些程序不能正常…...
Elasticsearch:结合 ELSER 和 BM25 文本查询的相关搜索
Elastic Learned Spare EncodeR (ELSER) 允许你执行语义搜索以获得更相关的搜索结果。 然而,有时,将语义搜索结果与常规关键字搜索结果相结合以获得最佳结果会更有用。 问题是,如何结合文本和语义搜索结果? 首先,让我…...
海外社媒运营为什么需要选择优质IP代理?
跨境电商卖家尤其需要关注海外社媒运营,想要更好地运营Instagram、Facebook、TikTok 或 Twitter等,挖掘社媒潜力需要采取战略方法,而社交媒体IP代理在这一活动中发挥着至关重要的作用,下面为你详细介绍。 一、社交媒体代理IP及其运…...
Java中的性能优化:深入剖析常见优化技巧
引言 在现代软件开发中,性能优化是一个至关重要的话题。Java作为一门强大而广泛使用的编程语言,也需要开发者关注和优化性能,以确保应用程序能够在各种场景下高效运行。本文将深入剖析Java中的一些常见性能优化技巧,为开发者提供…...
k8s的yaml文件中的kind类型都有哪些?(详述版Part2/2)
目录 综述 分块详述 13、ConfigMap 14、Secret 15、Ingress 16、StorageClass 17、Namespace 18、ServiceMonitor 19、HorizontalPodAutoscaler 20、NetworkPolicy 21、CustomResourceDefinition 22、Role 23、ClusterRole 24、ClusterRoleBinding 25、RoleBindi…...
什么是API网关代理?
带有API网关的代理服务显着增强了用户体验和性能。特别是对于那些使用需要频繁创建和轮换代理的工具的人来说,使用 API 可以节省大量时间并提高效率。 了解API API(即应用程序编程接口)充当服务提供商和用户之间的连接网关。通过 API 连接&a…...
AWS Simple Email Service (SES) 实战指南
Amazon Simple Email Service (SES) 是一项强大的电子邮件发送服务,适用于数字营销、应用程序通知以及事务性邮件。在这个实战指南中,我们将演示如何设置 AWS SES 并通过几个示例展示其用法。 设置 AWS SES 1. 创建 AWS 账户 首先,您需要创…...
详解Oracle数据库的启动
Oracle数据库的启动,其概念可参考Overview of Instance and Database Startup。 其过程可参见下图: 当数据库从关闭状态进入打开数据库状态时,它会经历以下阶段。 阶段Mount状态描述1实例在没有挂载数据库的情况下启动实例已启动ÿ…...
2024年跨境电商上半年营销日历,建议收藏
2024年伊始,跨境电商开启新一轮的营销竞技,那么首先需要客户需求,节假日与用户需求息息相关,那么接下来小编为大家整理2024上半年海外都有哪些节日和假期?跨境卖家如何见针对营销日历选品,助力卖家把握2024…...
Go采集1688网站数据对比商品价格
最近看了下多多和1688的一些商品价格,发现好多店铺都是无货源拿货一件发货,这就导致层层叠加价格翻了不知道几倍,真所谓多花钱办的事还是一样,因此,今天我就通过一个爬虫程序监控对应商品价格,了解行业龙头…...
Java泛型:灵活多变的类型参数化工具
👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、泛型1、什么是泛型2、泛型的语法 二、泛型类的使用1、泛型类的语法2、泛型如何编译的2.1、擦除机制2.2、为什么不能实例化泛…...
java 体育明星管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 java Web 体育明星管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…...
蓝凌EIS智慧协同平台 ShowUserInfo.aspx sql注入漏洞
漏洞描述: 蓝凌EIS智慧协同平台是一个简单、高效的工作方式专为成长型企业打造的沟通、协同、社交的移动办公平台,覆盖OA、沟通、客户、人事、知识等管理需求,集合了非常丰富的模块,满足组织企业在知识、项目管理系统建设等需求的…...
React Hooks的useState、useRef使用
React Hooks 是 React 16.8 版本引入的新特性,它允许你在不编写 class 的情况下使用 state 和其他 React 特性。其中,useState 和 useRef 是两个常用的 Hooks。 1. useState useState 是一个允许你在函数组件中添加 state 的 Hook。 使用说明…...
Linux--防火墙,实验案例:基于区域、服务、端口的访问控制
实验环境 某公司的Web服务器,网关服务器均采用Linux CentOS 7.3操作系统,如图2.13所示。为了 加强网络访问的安全性,要求管理员熟悉firewalld防火墙规则的编写,以便制定有效、可行的主机防护策略。 需求描述 > 网关服务器ens3…...
C++学习笔记(二十八):c++ 静态库及动态库的使用
静态库的使用 库的使用会很大程度减少我们的工作,本节对c中静态库和动态库的使用进行简单的介绍。静态链接库意味着这个库会被放到可执行文件中,在生成的exe中。动态链接库是在程序运行时链接的,可以在程序运行时调用加载库函数的方法来实现&…...
uniapp最简单的底部兼容安全区域显示
效果图: 1.html写上动态padding-bottom <view class"button-wrap" :style"padding-bottom:bottomPaddingrpx"><view class"com-btn cencel-btn">取消</view><view class"com-btn confirm-btn " cl…...
图像去噪——CBDNet网络训练自己数据集及推理测试,模型转ONNX模型(详细图文教程)
CBDNet 主要由两个子网络组成:噪声估计子网络和去噪子网络。噪声估计子网络用于估计图像的噪声水平,而去噪子网络用于去除图像中的噪声。 CBDNet 的优势在于: 它采用了更真实的噪声模型,既考虑了泊松-高斯模型,还考虑…...
【Verilog】期末复习——解释下列名词(FPGA、ASIC、IP、RTL、EDA、HDL、FSM)
系列文章 数值(整数,实数,字符串)与数据类型(wire、reg、mem、parameter) 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分…...
计算机网络 综合(习题)
【计算机网络习题】系列文章目录 计算机网络 第一章 绪论(习题) 计算机网络 第二章 计算机网络体系结构(习题) 计算机网络 第三章 应用层(习题) 计算机网络 第四章 运输层(习题) 计算机网络 第五章 网络层(习题) 计算机网络 第六章 数据链路层(习题) 计算机网络 第七章 物…...
探索vue2框架的世界:简述常用的vue2选项式API (二)
组件实例 👉 $attrs 用于父组件隔代向孙组件传值 长设置在子组件中 v-bind"$attrs" (Vue2.4) parent.vue (父组件) <template><div class"outer"><h3>父组件</h3>名字:<input v-model"name"…...
云计算:OpenStack 分布式架构管理FLAT网络(单控制节点与多计算节点)
目录 一、实验 1.环境 2.控制节点创建网络 3.控制节点创建规格 4.控制节点新增安全组入口规则 5.控制节点创建实例 二、问题 1.FLAT网络底层如何实现 2.无法SSH 云主机实例 一、实验 1.环境 (1) 主机 表1 主机 主机架构IP备注controller控制节点192.168.204.210已部…...
【深度学习】cv领域中各种loss损失介绍
文章目录 前言一、均方误差二、交叉熵损失三、二元交叉熵损失四、Smooth L1 Loss五、IOU系列的loss 前言 损失函数是度量模型的预测输出与真实标签之间的差异或误差,在深度学习算法中起着重要作用。具体作用: 1、目标优化:损失函数是优化算法…...
汇通网做期货的网站做期货的网站/seo入门视频
转自:http://hi.baidu.com/shmilyqlc/item/683e9f43a3265d2011ee1e74 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段…...
数据管理系统/马鞍山网站seo
一、lsattr命令 lsattr命令用于显示文件属性。 用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。 1.1 语法 lsattr [-adlRvV][文件或目录...]1.2 选项 选项描述-a显示所有文件和目录,包括以".“为名称开头字符的额外内建ÿ…...
网站开发 绩效考核/新东方英语线下培训学校
状态名解释1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态码。100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101(切换协议)请求者…...
学校网站建设开发商/免费获客软件
目录PBR 和 HDRPBR 和 HDR 在 PBR 渲染管线中考虑高动态范围(High Dynamic Range, HDR)的场景光照非常重要。由于 PBR 的大部分输入基于实际物理属性和测量,因此为入射光值找到其物理等效值是很重要的。无论我们是对光线的辐射通量进行研究性猜测,还是使…...
政府门户网站建设中标/成人零基础学电脑培训班
通过 Groovy 进行循环 同大多数脚本语言一样,Groovy 经常被宣传为生产力更高 的 Java 语言替代品。 更好、更短的循环 下面这种方法可以更好地感受 Groovy 缺乏类型的好处:首先,用与创建 HelloWorld 相同的方式创建一个 Groovy 类…...
php网站后台模板下载/建设网站费用
# 选择城市 citydriver.find_element_by_id(‘NeControl_Idlist’) # 通过selecet进行选择元素option s Select(city) # 去选择默认的第一项 s.deselect_by_index(0) # 选择city s.select_by_value(‘1|10003|1657936635’) # 选择增加按钮...