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

Kubernetes之探针probe

deployment只保证pod的状态为running。如果pod状态是running,但是里面丢失了文件,导致用户不能访问数据,则deployment是不管用的,此时就需要probe来检测pod是否正常工作。
probe是定义在容器里的,可以理解为容器里加的一个装置,来探测容器是不是正常工作,分为liveness probe和readiness probe。

liveness probe

liveness探测到某个pod运行有问题的话,就会通过重启pod来解决问题,重启即为把旧的pod删除,然后创建出来一个新的同名的pod。

command探测方式

该方式就是,在容器内部执行一条命令,如果这个命令的返回值为0,即命令正确执行了,则认为容器是正常的,如果返回值非0,则认为容器出现了问题,然后通过重启来解决问题。

  • 创建liveness1.yaml文件并修改,修改后内容如下
apiVersion: v1
kind: Pod
metadata:labels:run: liveness1name: liveness1
spec:terminationGracePeriodSeconds: 5containers:- image: busyboximagePullPolicy: IfNotPresentname: liveness1args:- /bin/sh- -c- touch /tmp/healthy;sleep 20;rm -rf /tmp/healthy;sleep 1000livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5successThreshold: 1failureThreshold: 3timeoutSeconds: 10

pod启动后,会创建/tmp/healthy,20秒后删除它,然后等待1000秒之后终止。
定义了livenessProbe,探测/tmp/healthy是否存在。如果该文件不存在,命令执行失败,返回值为零,则认为容器出问题了。

参数:
initialDelaySeconds:pod启动多少秒内不探测
periodSeconds:探测间隔时间
successThreshold:探测失败后,最少连续探测多少次才被认定成功
failureThreshold:探测失败后连续探测次数。
设置了terminationGracePeriodSeconds为5秒,默认30秒删除等待时间太长不利于观察。

  • 创建pod并查看pod的运行情况
kubectl apply -f liveness1.yaml
kubectl get pod
kubectl exec liveness1 -- ls /tmp/

在这里插入图片描述

pod创建后,可以看到文件夹,20s后看不到文件夹,探测三次后,pod在40s后自动重启,以此类推。

httpGet探测方式

该方式指的是HTTP协议的数据包能否通过指定端口访问到指定文件,如果能访问到,则认为容器是正常的,如果访问不到,则认为pod是不正常的。

  • 创建liveness2.yaml文件,内容如下
apiVersion: v1
kind: Pod
metadata:labels:run: liveness2name: liveness2
spec:terminationGracePeriodSeconds: 5containers:- image: nginximagePullPolicy: IfNotPresentname: liveness2livenessProbe:successThreshold: 1failureThreshold: 3initialDelaySeconds: 5periodSeconds: 5httpGet:path: /index.htmlport: 80scheme: HTTP
  • 创建pod,并查看状态
kubectl apply -f liveness2.yaml
kubectl get pod
kubectl exec liveness2 -- ls /usr/share/nginx/html
# 删除文件进行测试
kubectl exec liveness2 -- rm /usr/share/nginx/html/index.html
kubectl get pod
kubectl exec liveness2 -- ls /usr/share/nginx/html

在这里插入图片描述
删除文件后,探测不到文件,pod重启,重启后,该文件存在。

tcpSocket探测方式

  • 创建liveness3.yaml文件,内容如下
apiVersion: v1
kind: Pod
metadata:labels:run: liveness3name: liveness3
spec:terminationGracePeriodSeconds: 5containers:- image: nginximagePullPolicy: IfNotPresentname: liveness3livenessProbe:successThreshold: 1failureThreshold: 3initialDelaySeconds: 5periodSeconds: 5tcpSocket:port: 808
  • 创建pod,并查看状态
kubectl apply -f liveness3.yaml
kubectl get pod

在这里插入图片描述
nginx默认使用的80端口,而我们探测是808,探测失败后,连续探测3次失败(15S)后重新启动pod,+5s删除时间,20秒后重启。

readiness probe

readiness探测和liveness探测类似,只是处理方式不一样。readiness探测到pod有问题之后并不会重启,只是service接收到请求后不再转发到此pod。

  • 创建三个具有相同标签run=app的pod
apiVersion: v1
kind: Pod
metadata:labels:run: appname: pod1
spec:containers:- name: c1image: nginximagePullPolicy: IfNotPresentlifecycle:postStart:exec:command: ["/bin/bash","-c","touch /tmp/healthy"]readinessProbe:exec:command:- cat- /tmp/healthy
  • 创建pod
kubectl apply -f readiness1.yaml
sed 's/pod1/pod2/' readiness1.yaml | kubectl apply -f -
sed 's/pod1/pod3/' readiness1.yaml | kubectl apply -f -
kubectl get pod --show-labels

在这里插入图片描述

  • 修改每个pod默认页面
kubectl exec -ti pod1 -- bash
echo 111 > /usr/share/nginx/html/index.html
kubectl exec -ti pod2 -- bash
echo 222 > /usr/share/nginx/html/index.html
kubectl exec -ti pod3 -- bash
echo 333 > /usr/share/nginx/html/index.html

在这里插入图片描述

  • 创建一个服务,并查看服务,过去IP
kubectl expose --name=readiness0 pod pod1 --port=80
kubectl get service

在这里插入图片描述

  • 访问服务,由于三个pod标签相同,请求被负载均衡到三个pod。
curl 10.245.249.86

在这里插入图片描述

  • 删除readiness3的测试文件,探测失败后pod3状态不再为ready
kubectl exec -it pod3 -- rm /tmp/healthy
kubectl exec -it pod3 -- ls /tmp
kubectl get pod
# 再次访问服务,已不再把请求转发给pod3了
curl 10.245.249.86

在这里插入图片描述
pod3状态是不健康的
在这里插入图片描述
在这里插入图片描述

相关文章:

Kubernetes之探针probe

deployment只保证pod的状态为running。如果pod状态是running,但是里面丢失了文件,导致用户不能访问数据,则deployment是不管用的,此时就需要probe来检测pod是否正常工作。 probe是定义在容器里的,可以理解为容器里加的…...

高性能低功耗4口高速USB2.0 HUB NS1.1S 兼容FE1.1

NS1.1S是一款高性能、低功耗4口高速 USB2.0 HUB 控制器,上行端口兼容高速 480MHz和全速12MHz两种模式,4个下行端口兼容高速480MHz、全速12MHz、低速1.5MHz三种模式。 NS1.1S采用状态机单事务处理架构,而非单片机架构,多个事务缓冲…...

通过VS Code轻松连接树莓派

如果您正在使用树莓派作为开发平台,那么通过远程连接VS Code到树莓派是非常方便的一种方法。这样,您可以在Windows或macOS等计算机上开发和测试代码,而不必在树莓派上进行。 以下是通过VS Code远程连接到树莓派的步骤: 1.安装Re…...

图纸等敏感文件数据外发时 如何确保效率和安全性?

很多企业随着业务的发展,需要频繁的与外部供应商、合作伙伴之间进行数据的交换和使用。尤其是制造型企业,可能每天都要与几十、上百家供应商及合作伙伴进行产品数据交换。目前,大多数企业已经在内部实施了PDM/PLM系统,实现了对组织…...

2023年CDGA考试-第4章-数据架构(含答案)

2023年CDGA考试-第4章-数据架构(含答案) 单选题 1.请从下列选项中选择不属于数据架构师职责的选项 A.确保数据架构和企业战略及业务架构一致 B.提供数据和组件的标准业务词汇 C.设计企业数据模型 D.整合企业数据架构蓝图 答案 C 2.请从下列选项中选择不属于企业数据架构…...

理解随机游走

随机游走 基本思想 从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率1-a游走到这个顶点的邻居顶点,以概率a随机跳跃到图中的任何一个顶点,称a为跳转发生概率,每次游走后得出一个概率分布,该概率分布…...

mqtt协议1- 简介和报文格式

文章目录1.mqtt协议1: 简介和报文格式1.1.MQTT概念1.2.数据2.控制报文格式2.1.MQTT数据包结构2.2.固定头2.2.1.控制报文类型2.2.2.标志FLag2.2.3.剩余长度2.3.可变头2.4.有效载荷Payload消息体安全QoS(Quality of Service levels)ref:1.mqtt协议1: 简介和报文格式 Message Que…...

前端用动画快速实现骨架屏效果

一、动画的语法 1.定义动画 keyframes 自定义动画名称 {// 开始from {transform: scale(1);}// 结束to {transform: scale(1.5);} }// 或者还可以使用百分比定义keyframes 动画名称 {// 开始0% {transform: scale(1);}// 结束100% {transform: scale(1.5);} } 2.调用 anima…...

Python入门(未完待续。。。)

认识python 解释型(写完直接运行)、面向对象的高级编程语言;开源免费、支持交互式、可跨平台移植的脚本语言;优点:开源、易于维护、可移植、简单优雅、功能强大、可扩展、可移植;缺点:解释型→运…...

注解配置SpringMVC

使用配置类和注解代替web.xml和Spring和SpringMVC配置文件的功能。创建初始化类,代替web.xmlSpring3.2引入了一个便利的WebApplicationInitializer基础实现,名为AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了Abstr…...

多项新规重磅发布,微信视频号近期需要关注这几点

随着功能的完善和内容生态的丰富,视频号逐渐放慢产品更新频率,将重点放到商家准入标准、创作者扶持计划上来,本期我们将更侧重解读平台新规,帮助大家了解行业动向,把握最新趋势。01 视频号小店结算规则修订 取消48小时…...

Java调用第三方http接口的方式

1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。 在Java项目中调用第三方接…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第五章第六章 对极几何图优化库的使用

极平面,极点,极线的概念对极几何,对极约束的概念,通过叉积以及点积的性质推导单应矩阵以及基础矩阵光束平差法BA是LSAM中常用的非线性优化方法一个图由若干个顶点以及这些顶点连接的边构成,顶点通常是待优化的变量例如…...

从没想过开源 API 工具的 Mock 功能,这么好用

很多时候,接口尚未开发完成,在系统交互双方定义好接口之后,我们可以提前进行开发和测试,并不依赖上游系统的开发实现。 通过使用Mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行…...

智慧教室--智能管控系统

智慧教室系统是一款基于AIOT数字化平台的智能教育解决方案,该系统实现了全面数字化、自动化管理和智能化控制,可大大提高教学效率和质量,为学生带来更加优质的教育体验。智能管控是智慧教室系统的核心功能之一。通过物联网技术,将…...

React的useLayoutEffect和useEffect执行时机有什么不同

我们先看下 React 官方文档对这两个 hook 的介绍,建立个整体认识 useEffect(create, deps): 该 Hook 接收一个包含命令式、且可能有副作用代码的函数。在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器、记录日志以…...

C语言中#include<...>和#include“...“的区别

C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…...

ubuntu本地访问nas

需求 本地磁盘空间太小,本地网络里有个nas,希望将nas作为数据盘挂载到本地使用。 方法1 基于sftp访问nas 首先nas设置时要打开sftp访问功能。 然后用ubuntu桌面访问服务器的功能登录sftp,类似如下指令 sftp://user192.168.0.100 ubuntu下…...

第一章:网络参考模型

一、专业术语 ISO---(International Organization for Standardization)国际标准化组织 OSI---(Open System Interconnection Reference Model)开放式系统互联通信参考模型 IEEE---(Institute of Electrical and Electronics Engi…...

extends in typescript

困惑 初学 ts 时,extends 让我很困惑:有时它代表 扩大 ,有时代表 缩小 。举几个例子说明: 例1: class Animal {} class Dog extends Animal {}这是 js 本身就有的 class 继承语法,很熟悉了。 Dog 是 An…...

基于2D工程图几何特征与梯度提升模型的制造成本智能预测

1. 项目概述:从图纸到报价的智能革命在制造业,尤其是像汽车零部件这样的离散制造领域,报价速度直接决定了订单的生死。传统上,拿到一张新的2D工程图(DWG格式),成本工程师需要花上几天甚至几周时…...

ThinkPad开机嘀嘀响或报2100/2110错误?可能是硬盘松了!自己动手检测与修复指南

ThinkPad开机嘀嘀响或报2100/2110错误?三步排查硬盘接触不良问题ThinkPad用户对那个标志性的开机"嘀嘀"声再熟悉不过——正常情况下它意味着系统自检通过。但当这个声音变成急促的报警音,伴随屏幕上出现"2100 Detection error"或&qu…...

量子计算中Loschmidt回声相位测量的创新方法

1. 量子计算中的Loschmidt回声相位测量方法概述Loschmidt回声是量子动力学中一个重要的概念,它描述了量子系统在时间反演演化后与初始状态的相似程度。在量子计算领域,精确测量Loschmidt回声的相位信息对于理解量子系统的非平衡态行为、计算能量本征值以…...

BurpSuite 2025插件开发JDK版本兼容性实战指南

1. 为什么BurpSuite插件开发环境总在JDK版本上翻车?你是不是也经历过:下载好BurpSuite最新版2025.4,兴冲冲打开插件开发文档,照着官方示例写完第一个HelloWorld插件,一编译——java.lang.UnsupportedClassVersionError…...

对比 Token Plan 与按量计费在 Taotoken 平台上的成本体感差异

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比 Token Plan 与按量计费在 Taotoken 平台上的成本体感差异 对于个人开发者或项目管理者而言,在接入大模型服务时&a…...

自制极低频电流探头:负电阻补偿原理与低频方波测量实践

1. 项目概述:为极低频电流测量而生在电子测试领域,电流探头是个再常见不过的工具,无论是排查开关电源的纹波,还是分析电机驱动的波形,都离不开它。但如果你尝试用市面上常见的电流探头去观察一个频率低至几赫兹&#x…...

<背包问题>

背包问题是一类组合优化问题,其基本形式是给定一组物品,每个物品都有一个重量和一个价值,以及一个有限的背包容量,目标是在不超过背包容量的前提下,选择物品使得背包中的物品价值最大化。动态规划是解决背包问题的常用…...

告别杂乱!用FileMenu Tools 8.4.2一键清理Windows 11右键菜单(附隐藏技巧)

Windows 11右键菜单精简指南:用FileMenu Tools打造高效工作流每次在文件上点击右键时,那个缓慢弹出的冗长菜单是否让你感到烦躁?随着安装的软件越来越多,Windows的右键菜单往往会变得臃肿不堪,严重影响工作效率。今天&…...

超低功耗电池电压监控电路设计:从LM324到LPV324的硬件方案优化

1. 项目概述与核心需求解析在捣鼓各种电池供电的电子设备时,无论是自己做的无线传感器节点、便携式小工具,还是给孩子改装的玩具,有一个问题总是绕不开:你怎么知道电池快没电了?总不能每次都等到设备彻底罢工&#xff…...

Hermes Agent工具如何自定义接入Taotoken提供商

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent工具如何自定义接入Taotoken提供商 Hermes Agent 是一款功能强大的AI智能体开发框架,它支持通过自定义提供…...