当前位置: 首页 > news >正文

5-k8s-探针介绍

文章目录

    • 一、探针介绍
    • 二、探针类型
    • 三、探针定义方式
    • 四、探针实例
    • 五、启动探针测试
    • 六、存活探针测试
    • 七、就绪探针测试

一、探针介绍

  1. 概念

    在 Kubernetes 中 Pod 是最小的计算单元,而一个 Pod 又由多个容器组成,相当于每个容器就是一个应用,应用在运行期间,可能因为相关原因导致应用异常等。所以,我们需要对k8s进行健康检查,而我们可以通过探针配置运行状况检查,来确定每个 Pod 的状态。

二、探针类型

  1. 存活探针(Liveness Probe)

    存活探针用于检测容器内应用程序的健康状态。如果存活探针失败(即应用程序不健康),k8s将会自动重启容器,以尝试恢复应用程序的健康状态。如果重启容器仍然无法解决问题,Kubernetes 可能会根据配置的重启策略进一步采取行动。重启策略包括:

    • Always(默认):始终重启容器,无限次数地尝试恢复应用程序的健康状态。
    • OnFailure:仅在容器失败(退出状态码非零)时重启容器,尝试恢复应用程序的健康状态。
    • Never:永不重启容器,不会尝试恢复应用程序的健康状态。
  2. 就绪探针(Readiness Probe)

    对于就绪探针(Readiness Probe):就绪探针用于检测容器是否已经准备好接收流量。如果就绪探针失败,Kubernetes 将从服务负载均衡的池中剔除该容器。这意味着新的流量将不会被路由到该容器,直到就绪探针成功为止。这可以确保只有健康的容器能够接收流量,避免将流量发送到尚未准备好的容器上。一旦就绪探针成功,Kubernetes 将再次将容器纳入服务负载均衡,并开始将新的流量路由到该容器。

  3. 启动探针(Startup Probe)

    启动探针用于检测容器内应用程序是否已经启动成功。与存活探针和就绪探针不同,启动探针仅在容器启动时执行,并且只需检测一次。启动探针的结果不会影响容器的重启或负载均衡。它主要用于检测应用程序是否成功启动,并在启动过程中提供一定的等待时间。如果启动探针失败,Kubernetes 不会采取任何特殊行动。这是因为启动探针失败只意味着应用程序尚未成功启动,并且不会触发容器的重启或负载均衡操作。

三、探针定义方式

  1. 执行命令(Exec):通过在容器内执行特定的命令来检查应用程序的状态。如果命令的返回状态码是 0,探针被认为是成功的;否则,探针被认为是失败的。
  2. 发送 HTTP 请求(HTTP GET):通过发送 HTTP GET 请求到容器内的指定端点来检查应用程序的状态。如果返回的 HTTP 状态码在 2xx 或 3xx 范围内,探针被认为是成功的;否则,探针被认为是失败的。
  3. TCP 套接字(TCP Socket):通过尝试建立到容器内指定端口的 TCP 连接来检查应用程序的状态。如果连接成功建立,探针被认为是成功的;否则,探针被认为是失败的。

四、探针实例

  1. 查看我们coredns的探针配置:kubectl edit deploy coredns -n kube-system
    在这里插入图片描述

五、启动探针测试

  1. 快速部署nginx的pod:kubectl create deployment nginx --image=nginx

  2. 测试nginx启动探针-http(层级参考第四点coredns的层级):kubectl edit deploy nginx

            startupProbe:httpGet:path: /api/pathport: 80failureThreshold: 3periodSeconds: 10successThreshold: 1timeoutSeconds: 5
    
            startupProbe: 			#应用启动探针httpGet:				#使用http方式进行请求探测path: /api/path 	#请求路径port: 80			#请求端口failureThreshold: 3 	#失败次数达到多少次算失败periodSeconds: 10		#间隔时间successThreshold: 1	#成功次数达到多少次算成功timeoutSeconds: 5		#请求的超时时间
    

    查看:kubectl get pod
    在这里插入图片描述

    查看详情:kubectl describe pod nginx-569854844d-6dzxd
    在这里插入图片描述

    解:因为我们这边设置了启动探针,去访问/api/path。由于nginx没有这个路径,所以访问失败了,所以pod一直没有ready。可以将路径改为/index.html。

  3. 测试nginx启动探针-tcp:kubectl edit deploy nginx

            startupProbe:tcpSocket:port: 80failureThreshold: 3periodSeconds: 10successThreshold: 1timeoutSeconds: 5
    
  4. 测试nginx启动探针-shell:kubectl edit deploy nginx

            startupProbe:exec: command: - sh- -c- "echo 'success' > /inited;"failureThreshold: 3periodSeconds: 10successThreshold: 1timeoutSeconds: 5
    

    查看: kubectl exec -it nginx-576dc58bc8-scbv7 cat /inited
    在这里插入图片描述

六、存活探针测试

  1. 测试nginx应用存活探针-http:kubectl edit deploy nginx

            livenessProbe:httpGet:path: /started.htmlport: 80failureThreshold: 3periodSeconds: 10successThreshold: 1timeoutSeconds: 5
    

    查看:kubectl describe pod nginx-65cdf95974-m8l2p
    在这里插入图片描述

    因为不存在/started.html文件,所以检测不到存活,将地址改为/index.html即可

七、就绪探针测试

  1. 测试nginx就绪探针-http:kubectl edit deploy nginx

            readinessProbe:httpGet:path: /started.htmlport: 80failureThreshold: 3periodSeconds: 10successThreshold: 1timeoutSeconds: 5
    

    查看:kubectl describe pod nginx-5bd5c78bbd-tbzvb
    在这里插入图片描述

    因为不存在/started.html文件,所以无法就绪,将地址改为/index.html即可

http://www.lryc.cn/news/196150.html

相关文章:

  • 【网络安全 --- MySQL数据库】网络安全MySQL数据库应该掌握的知识,还不收藏开始学习。
  • 【MyBatis系列】- 什么是MyBatis
  • 【Linux】Ubuntu美化bash【教程】
  • 微信小程序仿苹果负一屏由弱到强的高斯模糊
  • js中的new方法
  • 机器学习-无监督算法之降维
  • ubuntu20.04下Kafka安装部署及基础使用
  • 汉得欧洲x甄知科技 | 携手共拓全球化布局,助力出海中企数智化发展
  • 【Javascript保姆级教程】显示类型转换和隐式类型转换
  • C++算法前缀和的应用:分割数组的最大值的原理、源码及测试用例
  • gitlab自编译 源码下载
  • SBD(Schottky Barrier Diode)与JBS(Junction Barrier Schottky)
  • HANA:计算视图-图形化Aggregation组件-踩坑小记(注意事项)
  • 【milkv】更新rndis驱动
  • 基于混沌博弈优化的BP神经网络(分类应用) - 附代码
  • 基于人工水母优化的BP神经网络(分类应用) - 附代码
  • 【C++】哈希学习
  • Nginx的安装——window环境
  • C语言笔记之指针
  • 【 OpenGauss源码学习 —— 列存储(CU)(二)】
  • Java并发面试题:(四)synchronized和lock区别
  • 使用Nginx实现采集端和数据分析平台的数据加密传输
  • appium---如何判断原生页面和H5页面
  • 【WIFI】【WPS】如何从log角度判断WPS 已经连接上
  • [正式学习java①]——java项目结构,定义类和创建对象,一个标准javabean的书写
  • day36
  • 五. 激光雷达建图和定位方案-开源SLAM
  • SAP MM学习笔记37 - 请求书照合中的 追加请求/追加Credit 等概念/ 请求书的取消
  • 【C#】Winform实现轮播图
  • MyBatisPlus(十九)自动填充