当前位置: 首页 > 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即可

相关文章:

5-k8s-探针介绍

文章目录 一、探针介绍二、探针类型三、探针定义方式四、探针实例五、启动探针测试六、存活探针测试七、就绪探针测试 一、探针介绍 概念 在 Kubernetes 中 Pod 是最小的计算单元,而一个 Pod 又由多个容器组成,相当于每个容器就是一个应用,应…...

【网络安全 --- MySQL数据库】网络安全MySQL数据库应该掌握的知识,还不收藏开始学习。

四,MySQL 4.1 mysql安装 #centos7默认安装的是MariaDB-5.5.68或者65, #查看版本的指令:[rootweb01 bbs]# rpm -qa| grep mariadb #安装mariadb的最新版,只是更新了软件版本,不会删除之前原有的数据。 #修改yum源的配…...

【MyBatis系列】- 什么是MyBatis

【MyBatis系列】- 什么是MyBatis 文章目录 【MyBatis系列】- 什么是MyBatis一、学习MyBatis知识必备1.1 学习环境准备1.2 学习前掌握知识二、什么是MyBatis三、持久层是什么3.1 为什么需要持久化服务3.2 持久层四、Mybatis的作用五、MyBatis的优点六、参考文档一、学习MyBatis知…...

【Linux】Ubuntu美化bash【教程】

【Linux】Ubuntu美化bash【教程】 文章目录 【Linux】Ubuntu美化bash【教程】1. 查看当前环境中是否有bash2. 安装Synth-Shell3. 配置Synth-Shell4. 取消greeterReference 1. 查看当前环境中是否有bash 查看当前使用的bash echo $SHELL如下所示 sjhsjhR9000X:~$ echo $SHELL…...

微信小程序仿苹果负一屏由弱到强的高斯模糊

进入下面小程序可以体验效果&#xff0c;然后进入更多。查看模糊效果 一、创建小程序组件 二、代码 wxml: <view class"topBar-15"></view> <view class"topBar-14"></view> <view class"topBar-13"></view&…...

js中的new方法

new方法的作用&#xff1a;创建一个实例对象&#xff0c;并继承原对象的属性和方法&#xff1b; new对象内部操作&#xff1a; 1&#xff0c;创建一个新对象&#xff0c;将新对象的proto属性指向原对象的prototype属性&#xff1b; 2&#xff0c;构造函数执行环境中的this指向…...

机器学习-无监督算法之降维

降维&#xff1a;将训练数据中的样本从高维空间转换到低维空间&#xff0c;降维是对原始数据线性变换实现的。为什么要降维&#xff1f;高维计算难&#xff0c;泛化能力差&#xff0c;防止维数灾难优点&#xff1a;减少冗余特征&#xff0c;方便数据可视化&#xff0c;减少内存…...

ubuntu20.04下Kafka安装部署及基础使用

Ubuntu安装kafka基础使用 kafka 安装环境基础安装下载kafka解压文件修改配置文件启动kafka创建主题查看主题发送消息接收消息 工具测试kafka Assistant 工具连接测试基础连接连接成功查看topic查看消息查看分区查看消费组 Idea 工具测试基础信息配置信息当前消费组发送消息消费…...

汉得欧洲x甄知科技 | 携手共拓全球化布局,助力出海中企数智化发展

HAND Europe 荣幸获得华为云颁发的 GrowCloud 合作伙伴奖项&#xff0c;进一步巩固了其在企业数字化领域的重要地位。于 2023 年 10 月 5 日&#xff0c;HAND Europe 参加了华为云荷比卢峰会&#xff0c;并因其在全球拓展方面的杰出贡献而荣获 GrowCloud 合作伙伴奖项的认可。 …...

【Javascript保姆级教程】显示类型转换和隐式类型转换

文章目录 前言一、显式类型转换1.1 字符串转换1.2 数字转换1.3 布尔值转换 二、隐式类型转换2.1 数字与字符串相加2.2 布尔值与数字相乘 总结 前言 JavaScript是一种灵活的动态类型语言&#xff0c;这意味着变量的数据类型可以在运行时自动转换&#xff0c;或者通过显式类型转…...

C++算法前缀和的应用:分割数组的最大值的原理、源码及测试用例

分割数组的最大值 相关知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例&#xff1a;付视频课程 二分 过些天整理基础知识 题目 给定一个非负整数数组 nums 和一个整数 m &#xff0c;你需要将这个数组分成 m 个非空的连续子数组。 设计一个算法…...

gitlab自编译 源码下载

网上都是怎么用 gitlab&#xff0c;但是实际开发中有需要针对 gitlab 进行二次编译自定义实现功能的想法。 搜索了网上的资料以及在官网的查找&#xff0c;查到了如下 gitlab 使用 ruby 开发。 gitlab 下载包 gitlab/gitlab-ce - Packages packages.gitlab.com gitlab/gitl…...

SBD(Schottky Barrier Diode)与JBS(Junction Barrier Schottky)

SBD和JBS二极管都是功率二极管&#xff0c;具有单向导电性&#xff0c;在电路中主要用于整流、箝位、续流等应用。两者的主要区别在于结构和性能。 结构 SBD是肖特基二极管的简称&#xff0c;其结构由一个金属和一个半导体形成的金属-半导体结构成。 JBS是结势垒肖特基二极…...

HANA:计算视图-图形化Aggregation组件-踩坑小记(注意事项)

今天遇到在做HANA视图开发的时候&#xff0c;遇到一个事&#xff0c;一直以为是个BUG&#xff0c;可把我气坏了&#xff0c;具体逻辑是这样的&#xff0c;是勇图形化处理的&#xff0c;ACDOCA innerjoin 一个时间维度表&#xff0c;就这么简单&#xff0c;完全按照ACDOCA的主键…...

【milkv】更新rndis驱动

问题 由于windows升级到了11&#xff0c;导致rndis驱动无法识别到。 解决 打开设备管理器&#xff0c;查看网络适配器&#xff0c;没有更新会显示黄色的图标。 右击选择更新驱动...

基于混沌博弈优化的BP神经网络(分类应用) - 附代码

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

基于人工水母优化的BP神经网络(分类应用) - 附代码

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

【C++】哈希学习

哈希学习 unordered系列关联式容器哈希结构除留余数法哈希冲突闭散列线性探测二次探测 负载因子开散列开散列增容 闭散列 VS 开散列字符串哈希算法 线性探测 & 二次探测实现拉链法实现 unordered系列关联式容器 unordered系列关联式容器是从C11开始&#xff0c;STL提供的。…...

Nginx的安装——window环境

1、下载Nginx 在官网下载稳定版本&#xff1a; http://nginx.org/en/download.html 以nginx/Windows-1.24.0为例&#xff0c;直接下载 nginx-1.24.0.zip。 下载后解压&#xff0c;解压后如下&#xff1a; 2、启动nginx 在window环境下启动nginx的方法有以下两种&#xff1a; …...

C语言笔记之指针

一.指针含义 1.a、*a与&a的区别 a存储指向变量的地址,*a为指针的值,&a为指针的地址 #include <stdio.h>int main(){/** 测试代码部分一 **/int a12;int *b1;b1&a1;printf(" a1 %d, &a1 %d, b1 %d, *b1 %d, &b1 %d\n\n",a1,&a1…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...