Kubernetes学习-深入Pod篇(二) 探针技术详解与应用

🏷️个人主页:牵着猫散步的鼠鼠 

🏷️系列专栏:Kubernetes渐进式学习-专栏

🏷️个人学习笔记,若有缺误,欢迎评论区指正 

目录

1. 前言

2. 探针是什么

3. 探针的分类

3.1. StartupProbe(启动探针)

3.2.  LivenessProbe(存活探针)

3.3.  ReadinessProbe(就绪探针)

4. 探针探测方式

4.1.  ExecAction(命令)

4.2.  TCPSocketAction(TCP连接)

4.3.  HTTPGetAction(Http连接)

6. 使用探针

5. 总结


1. 前言

我们在上次文章讲解了配置文件的编写,以及如何通过配置文件启动一个Pod资源,今天我们继续来学习Pod中一个重要的概念-探针。

2. 探针是什么

探针是Kubernetes中用于检查容器健康状况的机制。在Kubernetes中,探针可以确保Pod中的容器正常工作,并且可以在容器不健康的情况下自动重启容器,以保证应用程序的可用性和稳定性。我们在上一节配置文件中配置的重启策略,也是通过探针实现的。

3. 探针的分类

K8S中的探针主要分为三类:StartupProbe,LivenessProbe,ReadinessProbe

3.1. StartupProbe(启动探针)

k8s 1.16 版本新增的探针,用于判断应用程序是否已经启动了。

当配置了 startupProbe 后,会先禁用其他探针,直到 startupProbe 成功后,其他探针才会继续。

作用:由于有时候不能准确预估应用一定是多长时间启动成功,因此配置另外两种方式不方便配置初始化时长来检测,而配置了 statupProbe 后,只有在应用启动成功了,才会执行另外两种探针,可以更加方便的结合使用另外两种探针使用。

startupProbe:httpGet:path: /api/startupport: 80

3.2.  LivenessProbe(存活探针)

用于探测容器中的应用是否运行,如果探测失败,kubelet 会根据配置的重启策略进行重启,若没有配置,默认就认为容器启动成功,不会执行重启策略。

livenessProbe:failureThreshold: 5httpGet:path: /healthport: 8080scheme: HTTPinitialDelaySeconds: 60periodSeconds: 10successThreshold: 1timeoutSeconds: 5

3.3.  ReadinessProbe(就绪探针)

用于探测容器内的程序是否健康,它的返回值如果返回 success,那么就认为该容器已经完全启动,并且该容器是可以接收外部流量的。

readinessProbe:failureThreshold: 3 # 错误次数httpGet:path: /readyport: 8181scheme: HTTPperiodSeconds: 10 # 间隔时间successThreshold: 1timeoutSeconds: 1

4. 探针探测方式

那么探针是如何判断容器的状态的呢,一般可以通过三种方式:

4.1.  ExecAction(命令)

在容器内部执行一个命令,如果返回值为 0,则任务容器时健康的。

livenessProbe:exec:command:- cat- /health

4.2.  TCPSocketAction(TCP连接)

通过 tcp 连接监测容器内端口是否开放,如果开放则证明该容器健康

livenessProbe:tcpSocket:port: 80

4.3.  HTTPGetAction(Http连接)

生产环境用的较多的方式,发送 HTTP 请求到容器内的应用程序,如果接口返回的状态码在 200~400 之间,则认为容器健康。

livenessProbe:failureThreshold: 5httpGet:path: /healthport: 8080scheme: HTTPhttpHeaders:- name: xxxvalue: xxx

6. 使用探针

我们接下来在上节课案例的基础上运用一下探针,我们在原来的yaml配置文件中假如探针配置,使用http方式来探测启动情况,因为ngixn没有提供这个服务,理论上会启动失败

    startupProbe: #应用启动探针配置httpGet: #探测方式,基于http请求探测path: fapi/path # http请求路径port: 80 #请求端口failureThreshold: 3 #失败多少次才算真正失败periodSeconds: 10 #间隔时间successThreshold: 1 #多少次监测成功算成功timeoutSeconds: 5 #请求的超时时间

删除上次文章创建的pod 

kubectl delete pod nginx-demo

 重新启动pod

kubectl create -f nginx-demo.yaml

查看容器启动情况

kubectl describe po nginx-demo

可以看到最下方提示Http failure,但我们知道ngixn默认肯定是没有/api/path这个服务路径的,所以启动探针探测肯定是不成功的,这个pod的容器服务就被判定为未成功启动。

但是我们可以换一种探测方式,使用TCP方式去连接服务的80端口,这样更合适探测nginx服务是否正常启动

修改配置,将探测方法改为tcpSocket,探测端口为80

 重启启动服务

kubectl delete pod nginx-demo
kubectl create -f nginx-demo.yaml

可以看到pod服务状态为Running,正常运行 。

5. 总结

在 Kubernetes(k8s)中,Pod 的探针(Probe)是一种健康检查机制,用于确保 Pod 中的容器能够正常工作。Kubernetes 通过探针来检查容器的状态,以确保服务能够可靠地运行。探针主要有三种类型:存活探针,就绪探针,启动探针。探针可以通过三种方式探测:HTTP GET方式,TCP套接字方式,Exec命令方式。探针机制是 Kubernetes 自动化管理和自愈能力的重要组成部分,它确保了 Pod 的健康状态,提高了应用的可用性和稳定性。

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

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

相关文章

Spring WebFlux 初探-响应式编程-021

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Nex…

连接虚拟机的 redis

用Windows 的 Redis Insight 连接虚拟机的 安装redis发现连不上 我的redis是新安装,没有用户名密码,发现是ip问题 127 开头的被我注释了,换成了ifconfig查到的ip

C语言如何删除表中指定位置的结点?

一、问题 如何删除链表中指定位置的结点? 二、解答 删除链表中指定的结点,就像是排好队的⼩朋友⼿牵着⼿,将其中⼀个⼩朋友从队伍中分出来,只需将这个⼩朋友的双⼿从两边松开。 删除结点有两种情况: (1&am…

【微信小程序开发(从零到一)【婚礼邀请函】制作】——任务分析和效果实现的前期准备(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

【现代C++】三路比较运算符

C20引入了三路比较运算符&#xff08;也称为太空船运算符&#xff0c;<>&#xff09;&#xff0c;它允许同时比较两个值&#xff0c;并返回它们的相对顺序。这个运算符简化了需要定义多个比较运算符&#xff08;如、!、<、<、>、>&#xff09;的类的代码&…

SCP收容物171~180

注 &#xff1a;此文接SCP收容物161~170,本文只供开玩笑 ,与steve_gqq_MC合作 --------------------------------------------------------------------------------------------------------------------------------- 目录 scp-171 scp-172 scp-173 scp-174 scp-175 …

利用阿里国际站和eBay平台销售数据提升产品销售额的有效方法。

作为全球知名的跨境电商平台&#xff0c;阿里国际站和eBay汇聚了众多跨境电商商家。为了提升业务效率和优化经营策略&#xff0c;商家们需要时刻关注自家店铺中产品的销售情况。通过深入了解销售数据&#xff0c;商家们能够准确把握店铺的经营状态&#xff0c;及时识别潜在问题…

企业计算机服务器中了rmallox勒索病毒怎么解密,rmallox勒索病毒解密工具流程

在当今数字化时代&#xff0c;越来越多的企业依赖计算机服务器进行办公开展业务&#xff0c;计算机服务器犹如企业的心脏&#xff0c;能够为企业存储许多重要的核心信息&#xff0c;帮助企业有效的开展各项工作业务&#xff0c;提高企业的生产效果&#xff0c;但网络是一把双刃…

【现代C++】范围库的应用

C20引入了范围库&#xff08;Ranges library&#xff09;&#xff0c;它是标准模板库&#xff08;STL&#xff09;的一个扩展&#xff0c;提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码&#xff0c;使得操作序列变得更简洁、更易读。以下是C范…

一对一WebRTC视频通话系列(六)——部署到公网

本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习&#xff0c;梳理总结后写下文章&#xff0c;对音视频相关内容感…

elasticsearch使用Ngram实现任意位数手机号搜索

文章目录 Ngram自定义分词案例实战问题拆解 Ngram分词器定义Ngram分词定义Ngram分词示例Ngram分词应用场景 Ngram分词实战 Ngram自定义分词案例 当对keyword类型的字段进行高亮查询时&#xff0c;若值为123asd456&#xff0c;查询sd4&#xff0c;则高亮结果是&#xff1c;em&a…

风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码)完整代码风电功率预测 | 基于遗传算法优化BP神经网络实现风电功率预测(附matlab完整源码) 基于遗传算法优化BP神经网络是一种常见的方法,用于改进BP神经网络在风电功率预测中的性…