k8s 就绪探针

【k8s 系列】k8s 学习二十,就绪探针

提起探针,不知兄dei 们是否有印象,之前我们分享过存活探针,分享存活探针是如何确保异常容器自动重启来保持应用程序的正常运行,感兴趣的可以查看文章 k8s 系列k8s 学习十七,存活探针副本机制2

今天我们就单独来分享一下就绪探针

就绪探针

就绪探针也是分为 3 种类型

  • Exec 探针

在执行进程的地方,容器的状态是由进程的退出状态码决定的

  • HTTP GET 探针

向容器中发送 GET 请求,通过响应的 HTTP 状态码判断容器是否准备好了

  • TCP soket 探针

打开一个 TCP 连接到容器的指定端口,如果可以建立连接,那么就认为容器是已经准备好了

看了上述 3 种类型,是不是感觉和存活探针好像也差不多

那么我们继续看看就绪探针的细节,存活探针和就绪探针的区别

启动容器的时候,存活探针和就绪探针,都可以给 k8s 配置一个等待时间,当等待时间到了之后,才可以执行检查的操作

存活探针就绪探针
存活探针检查容器的时候,如果检查未通过,会立马重启 pod周期性的检查容器,
若检查不通过,证明 pod 没有准备好,那么 该 pod 就会从服务中删除掉
当检查 pod 再次准备就绪了,那么该 pod 又会重新添加到服务中
  • 存活探针是通过杀死异常的容器,使用新的正常的容器来替代他们,最终保证 pod 能够正常工作
  • 就绪探针是确认只有那些准备好处理请求的 pod 才会被加入到服务中来

画一个图来说明一下效果:

对于未就绪的 pod ,就绪探针仍然是周期性的探测,若 pod 未就绪,也不会杀掉或者重启 pod,当 pod 被检测到就绪后,该 pod 仍然是可以被加入到服务中的

此处的从服务中删除和加入到服务中,具体体现是在 service 的 endpoints 列表中的 IP 和 PORT 信息

如何在 pod 中加入就绪探针

还记得之前我们我们演示存活探针的例子是在什么资源里面演示的吗?我们是在 RC 和 RS 里面演示,因为 RC / RS 可以动态的扩缩 pod 的数量,演示起来方便

查看我们实验环境的 rs 资源信息

编辑 rs 资源清单,计入就绪探针

readinessProbe:exec:command:- ls- /var/xmtready

删除当前的 pod

学了 RS 和 RC 后我们知道,当修改了 RS 或者 RC 资源后,对于现有的 pod 并不会影响,只有新生成一个 pod 的时候才会用我们最新的容器模板来创建 pod

因此,我们可以先删除掉 pod

kubectl delete po --all

查看到效果,生成的每一个 pod 都是未 就绪的,我们可以查看任意 pod ,describe 查看一下详情

关于 Readiness: exec [ls /var/xmtready] delay=0s timeout=1s period=10s #success=1 #failure=3 一栏,参数和之前的存活探针含义一致,此处就不在赘述了

来关注一下报错信息:

kubelet, minikube  Readiness probe failed: ls: cannot access /var/xmtready: No such file or directory

可以看到失败的原因是就绪探针,探测失败了,没有办法正确访问到 pod 里面的 /var/xmtready 文件或者目录

此处也就是模拟 pod 需要正常处理请求的前置条件,必须要前置条件准备好之后, pod 才是就绪的

人为准备好就绪条件

那么对于现在实验的这个情况,我们可以认为的在 pod 里面加入就绪的前置条件,那就是在 pod 中创建一个 /var/xmtready 文件或者目录即可

kubectl exec kubia-rs-4kvg2 -- touch /var/xmtready

此时对于 pod kubia-rs-4kvg2,已经有了就绪的前置条件,那么该 pod 就会被认为是就绪了,就可以正常处理外部的请求了,因为我们在 kubectl get po 的时候就可以看到 READY 是 1/1

就绪探针我们在实际工作中如何使用比较好呢?

此处要说明一下,上述方式是为了演示方便,才使用直接去人为添加探针的前置条件来添加或者删除 pod 到 服务中来

前面的文章也分享到,我们应该通过使用标签的方式来从服务中添加 pod 或者 删除 pod

在工作中,我们都可以将就绪探针加入到 pod 中,但是对于何时才算就绪,应用程序达到了什么状态才算是就绪,才算是能够正常处理外部客户端打过来的请求,这个就需要业务实现者根据自身的需求来定义了

以上就是今天分享到的 就绪探针,顺带回顾了一下存活探针的,希望对你有帮助

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~
更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

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

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

相关文章

masm32 链接问题

当我参考资料学习Windows环境下32位汇编时,编译倒没什么问题,可是链接就不对了。 网上也没找到解决办法,经过后来思考了一下,会不会是link.exe这个玩意有问题?比如有多个? 所以使用link的绝对路径试了一下…

【Hello mysql】 mysql的基本查询(二)

Mysql专栏:Mysql 本篇博客简介:介绍mysql的基本查询 mysql的基本查询(二) 将筛选出来的数据插入到数据库中(insertselect)聚合函数统计班级共有多少同学统计班级手机的qq号有多少统计本次考试去重的数学成绩…

【Linux】设置 命令 --help 帮助文件为中文

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 前言设置系统默认语言为中文安装man-…

Redis — 不仅仅是缓存

1*qIy3PMmEWNcD9Czh_21C8g.png Redis是一种快速、开源的内存键值(NoSQL)数据库,远远超越了缓存的功能。Redis使用RAM进行操作,提供亚毫秒级的响应时间,支持每秒数百万次请求。Redis主要用于缓存,但它也可以…

设置和使用DragGAN:搭建非官方的演示版

ragGAN的官方版还没有发布,但是已经有非官方版的实现了,我们看看如何使用。DragGAN不仅让GAN重新回到竞争轨道上,而且为GAN图像处理开辟了新的可能性。正式版本将于本月发布。但是现在已经可以在一个非官方的演示中试用这个新工具了 DragGAN …

GitKraken 6.5.1免费中文版安装

今天发现SmartGit上传不了代码了, 看了一下过期了, 我不想花钱买, 就找个替代工具, 方便写代码, 方便合并代码, 方便点击提交代码, 免得敲命令浪费时间. 安装 6.5.1 版本 下载版本,已上传到 CSDN :GitKraken 6.5.1免费中文版安装更换快捷方式 C:\Users\kentrl\AppData\Local\…

Linux进程信号(一)

信号产生 1.信号基础知识2.初步认识信号3.signal函数4.技术应用角度的信号5.调用系统函数向进程发信号6.由软件条件产生的信号7.硬件异常产生信号8.core 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀&#x1f…

GPT模型应用丨遥感云大数据在灾害、水体与湿地领域典型案例实践

​ ​ ​ ​ 第一部分 基础实践 一 平台及基础开发平台 GEE平台及典型应用案例介绍; GEE开发环境及常用数据资源介绍; ChatGPT、文心一言等GPT模型介绍 JavaScript基础简介; GEE遥感云重要概念与典型数据分析流程; …

基于单片机的智能鞋柜的设计与实现

功能介绍 以51单片机作为主控系统;通过DHT11温湿度采集;通过按键设置逻辑处理;通过LED紫外线消毒;通过继电器控制风扇进行换气除湿;通过继电器控制加热片进行加热;整个电路以5v供电; 电路图 PCB 源代码 #i…

《网络安全标准实践指南》(72页)

导读 摘要:为指导网络数据安全风险评估工作,发现数据安全隐患,防范数据安全风险,依据《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》等法律法规,参照数据安全相关国家标…

[QT编程系列-2]:C++图形用户界面编程,QT框架快速入门培训 - 1- 预备知识

目录 概述 1. 前置条件 1.1 C 1.2 图形界面 1.3 图形程序集成开发环境 1.4 图形程序开发框架 1.5 跨平台特性 1.6 QT快速感知 1.6.1 QT的典型应用 1.6.2 QT的特点 1.6.3 QT跨平台集成开发环境 1.6.4 QT是一种UI开发框架 1.6.5 QT的主要函数库 概述 1. 前置条件 学习…

如何在Ubuntu18.04中下载MySQL5.7

检查环境 首先检查自己电脑有没有安装过mysql,输入如下: rpm -qa | grep mysql如果有则清理干净在安装,输入 whereis mysql找到文件夹目录,再把它删除 rpm -e --nodeps mysql-xxx检查系统是否自带mariadb,输入如下检查 rpm -…