5-k8s-探针介绍

news2025/1/12 4:46:24

文章目录

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

一、探针介绍

  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/path
                port: 80
              failureThreshold: 3
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 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: 80
              failureThreshold: 3
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 5
    
  4. 测试nginx启动探针-shell:kubectl edit deploy nginx

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

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

六、存活探针测试

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

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

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

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

七、就绪探针测试

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

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

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

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

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

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

相关文章

采用Spring Boot框架开发的医院预约挂号系统3e3g0+vue+java

本医院预约挂号系统有管理员,医生和用户。管理员功能有个人中心,用户管理,医生管理,科室信息管理,预约挂号管理,用户投诉管理,投诉处理管理,通知公告管理,科室分类管理。…

LeetCode24.两两交换链表中的节点

这道题还是比较简单,我看完题目的想法就是借助一个第三变量,来改变两个节点的指针的指向,比如我要改变1和2节点的指向,我用h1表示节点1,我创建一个新的节点ans,先拿ans指向节点2(ans.next h1.n…

Linux性能优化--性能工具:网络

7.0 概述 本章介绍一些在Linux上可用的网络性能工具。我们主要关注分析单个设备/系统网络流量的工具,而非全网管理工具。虽然在完全隔离的情况下评估网络性能通常是无意义的(节点不会与自己通信),但是,调查单个系统在网络上的行为对确定本地配置和应用程…

从零开始的LINUX(二)

1.alias: 用法:取别名,此时code1是code的别名,对code1进行操作和对code进行操作结果一致。 如果原本文件名不存在,仍可以正常运行指令,不会报错。 2.stat 显示指定文件或目录的状态、属性。 3.touch 当文件名不存在的…

基于SSM+Vue的日用品网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

数据结构复盘——第一章:绪论

文章目录 第一部分:数据的专业术语1、数据2、数据元素3、数据项4、数据对象5、数据类型6、抽象数据类型(ADT)第一部分习题第二部分:数据结构1、逻辑结构:2、存储结构(又称物理结构)︰3、运算:第二部分习题第三部分:算法1、算法的五个特性2、算法的设计五个要求第三部分习题…

antd的RangePicker设置默认值,默认近七天(andt+react)

import moment from "moment";state {initData:[moment().startOf(day).subtract(6, d), moment().endOf(day)], }<FormItem label"产生时间" {...tailItemLayout}>{getFieldDecorator("produceTime", {initialValue: initData})(<Ran…

C语言 形参、实参

定义 形参 形式上的参数&#xff0c;没有确定的值 实参 实际存在的&#xff0c;已经确定的参数&#xff0c;常量&#xff0c;变量&#xff0c;表达式&#xff0c;都是实参 区别 实参的值不随形参的变化而变化 在C语言中&#xff0c;数据传送是单向的&#xff0c;即只能把实…

【软考】14.2 统一建模语言UML/事务关系图

《统一建模语言UML》 可视化的建模语言&#xff0c;非程序设计语言UML的结构&#xff1a;构造块&#xff08;事物、关系、图&#xff09;、规则、公共机制 模型的事物 结构事物&#xff1a;静态行为事物&#xff1a;动态分组事物&#xff1a;组织注释事物&#xff1a;解释 事…

基于寄生捕食优化的BP神经网络(分类应用) - 附代码

基于寄生捕食优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于寄生捕食优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.寄生捕食优化BP神经网络3.1 BP神经网络参数设置3.2 寄生捕食算法应用 4.测试结果…

GPT绘制流程图咒语

【咒语】下面是我的一篇论文选取部分&#xff0c;为了让读者更好理解&#xff0c;我准备画一张图&#xff0c;请你阅读后为我设计一下这个图应该怎么画&#xff0c;更有说服力&#xff0c;更容易理解 论文片段&#xff1a; 多模态数据融合研究的基础在于有效的数据采集。首先&a…

DIY私人图床:使用CFimagehost源码自建无需数据库支持的PHP图片托管服务

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

12-网络篇-通信过程中的网络表

1.ARP表 主机1和主机2在同一个局域网内&#xff0c;通过之前的章节&#xff0c;我们知道在通信过程中&#xff0c;除了要知道对方的IP地址以外&#xff0c;我们还要知道对方的硬件地址&#xff0c;也就是Mac地址。而ARP协议就是为了解决此种问题。 ARP协议的用途是为了从网络层…

操作系统备考学习 day9 (3.1.1 ~ 3.1.11)

操作系统备考学习 day9 第3章 内存3.1 内存管理概念3.1.1 内存的基本知识指令的工作原理绝对装入可重定位装入动态运行时装入从写程序到程序运行链接的三种方式 3.1.2 内存管理概念内存空间的分配与回收内存保护 3.1.3 覆盖与交换覆盖技术交换技术 3.1.4 连续分配管理方式单一连…

用批处理连续ping一个ip段

今天写这个有一个原因&#xff0c;就是我家的网络用了一个无线电力猫做为无线网络扩展&#xff0c;但忘记了无线电力猫的IP&#xff0c;而且我家新路由器也看不到这个电力猫&#xff0c;也可能有一个原因。我原来用的是192.168.1.1的华为路由器&#xff0c;自然我就把这个无线电…

IDEA中明明导入jar包了,依旧报ClassNotFoundException

解决办法&#xff1a; 1.点击IDEA右上角的设置 2.点击Project Structure... 3.点击Artifacts,点击号把包添加下就可以了

Typora 导出PDF 报错 failed to export as pdf. undefined 解决方案

情况 我想把一个很大的markdown 导出为 248页的pdf 然后就报错 failed to export as pdf. undefined 原因 &#xff1a; 个人感觉应该是图片太大了 格式问题之类导致的 解决 文件 -> 偏好设置 - > 导出 -> pdf -> 自定义 -> 把大小全部改为24mm (虽然图中是32 …

Linux网络编程——套接字socket

文章目录 套接字创建套接字绑定套接字侦听接收请求建立连接 sockaddrsockaddr_insockaddr_un 地址转换函数字符串转in_addr的函数inet_aton 函数inet_pton 函数inet_addr 函数 in_addr转字符串的函数inet_ntoa 函数inet_ntop 函数 总结 套接字 Socket&#xff08;套接字&#…

【并发编程-1】多线程与并发设计

多线程介绍&#xff1a; 1、基础回顾&#xff1a; 线程状态&#xff1a; NEW-新建&#xff1a;创建了线程对象&#xff0c;还未开始执行。RUNNABLE-运行&#xff1a;线程对象已在java虚拟机运行&#xff0c;分为就绪&#xff08;Ready&#xff09;和运行中(Running)。BLOCKED-…

阵列信号处理_对比常规波束形成法(CBF)和Capon算法

空间谱估计 利用电磁波信号来获取目标或信源相对天线阵列的角度信息的方式&#xff0c;也称测向、波达方向估计&#xff08;DOA&#xff09;。主要应用于雷达、通信、电子对抗和侦察等领域。 发展 常规波束形成&#xff08;CBF&#xff09;。本质是时域傅里叶变换在空域直接…