我们在上一篇文章中学习了 Kubernetes–k8s—滚动更新–零停机不停服发布服务

里面涉及到 使用 存活探针和 就绪探针。

但是 这两个探针 具体怎么设置,是不是用同一个 api作为检查点,还是需要分开。

以及 就绪探针和 存活探针分别做到什么程度 都需要有一个 判断的度。

我找到了一篇 《Kubernetes存活探针和就绪探针的最佳实践》 希望可以给大家参考。

原文链接:http://dockone.io/article/8367


【编者的话】Kubernetes提供了两种探针来检查容器的状态,Liveliness和Readiness,根据官方文档,Liveliness探针是为了查看容器是否正在运行,翻译为存活探针,Readiness探针是为了查看容器是否准备好接受HTTP请求,翻译为就绪探针。这篇文章主要阐述了作者在使用这两种探针时总结的一些最佳实践。

在Kubernetes中,Pod是Kubernetes创建及管理的最小的可部署的计算单元,一个Pod由一个或者多个容器(Docker,rocket等等)组成,这些容器共享内存,网络以及运行容器的方式。

在Kubernetes上下文中存活探针和就绪探针被称作健康检查。这些容器探针是一些周期性运行的小进程,这些探针返回的结果(成功,失败或者未知)反映了容器在Kubernetes的状态。基于这些结果,Kubernetes会判断如何处理每个容器,以保证弹性,高可用性和更长的正常运行时间。

健康检查是每个分布式系统所必需的!
Kubernetes的健康检查
Kubernetes提供了两种类型的健康检查:就绪探针和存活探针,它们有各自的用途。在这篇文章中我们将会选择:
/.well-known/live——用于探测HTTP是否存活
/.well-known/ready——用于探测HTTP是否就绪

简而言之,HTTP探测意味着Kubernetes在特定时间间隔执行HTTP请求/.well-known/live和/.well-known/ready。响应的状态码用于决定需要对Pod执行的操作。如果状态代码在区间[200,300)中,则一切正常。除此以外:
如果存活探测器的状态代码是4xx或5xx,则代表Pod已被重启。
如果就绪探测器的状态代码是4xx或5xx,那么Pod会被标记为不健康,并且Kubernetes为了提高可靠性和正常运行时间将不会再将HTTP请求转发给它。

如果您的容器独立于任何支持服务,则容器可以具有在同一处理程序上进行存活和就绪检查,并且后面的实践不适用于这种情况。
我们与来自Metro Systems Romania - Site Reliability Team的团队成员一起确定了健康检查的最佳实践列表,并建议应用程序开发人员遵循这些实践。这些最佳实践如下:

1.存活和就绪的结果处理程序需要是互相独立的程序

如前所述,对于在Kubernetes上下文中部署的每个产品,应该实现2个分别处理HTTP请求“存活”和“就绪”的处理程序。这些探测器的处理程序需要独立实现自己的功能。

2.不要把“存活/就绪”探针的逻辑与你的程序解耦

这适用于作业处理应用程序。对于Kubernetes,了解应用程序是否正在运行非常重要。如果存活/就绪逻辑被解耦了在新进程中运行,则结果不准确。

3.不要在“存活”处理程序里实现任何逻辑。如果主线程正在运行,它需要返回状态200,如果不是,则返回5xx

这个探针让Kubernetes知道应用程序是正在运行还是停止运行。通过检查/.well-known/live的状态代码来做出决定,如果应用程序被检测为停止运行,Kubernetes会重新启动Pod。从可靠性的角度来看,如果应用程序的主线程已启动并正在运行,则存活探针的探测的结果为true,否则为false。

在这个上下文中,“逻辑”意味着对互相连接的服务实施某种检查

4.在“就绪”探针的处理程序中实现逻辑,以便提供有关应用程序准备情况的详情

就绪探针让Kubernetes知道Pod是否已准备好接收HTTP请求。作为开发人员,在此处实现一些逻辑来检查应用程序的所有后端依赖的可用性非常重要。当实现就绪处理程序时,需要清楚的知道您的应用程序依赖于哪些功能。换句话说,在就绪处理程序里,需要运行所有步骤以保证应用程序已准备好接收和处理https请求,这非常重要。例如,如果应用程序需要建立与数据库的连接以准备处理HTTP请求,那么在“就绪”的处理程序中就必须检查是否已建立与数据库连接并能正常使用。

5.不要尝试在就绪处理程序上重新建立应用程序的就绪状态。这个探针只是为了检查应用程序是否准备就绪,而不是让应用程序就绪。

我并不建议实现任何让程序重新就绪的逻辑。这些逻辑可能会为系统中的某些组件带来危险。
结论
存活和就绪探针是部署在Kubernetes中的应用程序的核心和灵魂。它们是与虚拟机管理程序通信的标准方式,通过这种方式可以了解虚拟机的状态和问题。存活和就绪探针是开发人员和应用程序必备的强大武器,它确保应用程序的可靠性和弹性。

特别感谢Ionut Ilie。部分内容是他的研究成果以及智慧结晶。

原文链接:Kubernetes Readiness & Liveliness Probes — Best Practices(翻译:Grace)

==============================================================================
译者介绍
Grace,程序员,研究生毕业于SUNY at Stony Brook,目前供职于Linktime Cloud Company,对大数据技术以及数据可视化技术感兴趣。

Kubernetes--k8s---存活探针和就绪探针的最佳实践相关推荐

  1. Kubernetes 存活探针和就绪探针的最佳实践

    Kubernetes存活探针和就绪探针的最佳实践 [编者的话]Kubernetes提供了两种探针来检查容器的状态,Liveliness和Readiness,根据官方文档,Liveliness探针是为了 ...

  2. Kubernetes存活探针和就绪探针的最佳实践

    在Kubernetes中,Pod是Kubernetes创建及管理的最小的可部署的计算单元,一个Pod由一个或者多个容器(Docker,rocket等等)组成,这些容器共享内存,网络以及运行容器的方式. ...

  3. pod健康检查之容器的存活探针、就绪探针、启动探针

    前言 环境:centos7.9 docker-ce-20.10.9 kubernetes-version v1.22.6 为什么需要存活探针和就绪探针 在前面我们介绍过,可以通过配置restartPo ...

  4. K8s 之 ReadinessProbe(就绪探针)使用的迷惑

    一.问题 当我们将某应用的新版本发布到 K8s 的时候,经常会出现这样一个场景: Pod 已经运行起来了(READY=1/1,STATUS=Running),但是 Pod 中的应用(例如:spring ...

  5. k8s 存活检查与就绪检查

    Kubernetes提供了两种探针来检查容器的状态,Liveliness和Readiness,根据官方文档 Liveliness探针是为了查看容器是否正在运行,翻译为存活探针(livenessProb ...

  6. K8S安全军规101:对CNCF最佳实践的扩充

    戳蓝字"CSDN云计算"关注我们哦! 作者 | GOINS 本文转载自公众号:RancherLabs 在昨天的文章里,我们分享了CNCF为广大Kubernetes用户建议的9项Ku ...

  7. SpringBoot中就绪探针和存活探针

    文章目录 1.介绍 2.Kubernetes探针 3.就绪探针和存活探针在Actuator 3.1.就绪和活跃状态转换 4. 管理应用程序可用性 4.1. 更新可用性状态 4.2.监听变化 1.介绍 ...

  8. kubernetes学习笔记-就绪探针20220405

    1.介绍就绪探针 就绪探测器会定期调用,并确定特定的pod是否接收客户端请求.当容器的准备就绪探测返回成功时,表示容器已经准备好接收请求 就绪探针类型3种: 1)Exec探针,执行进程的地方,容器的状 ...

  9. 自建K8S迁移镜像、应用至阿里云ACK最佳实践

    简介:本最佳实践构建以下场景: 1.以河源ECS构建Harbor仓库,模拟IDC的镜像仓库服务. 2.以河源ECS构建Registry仓库,模拟IDC的镜像仓库服务. 3.以河源地域模的ECS搭建K8 ...

最新文章

  1. 深度有趣 | 26 Seq2Seq机器翻译
  2. 我所理解的 Block
  3. 转贴 CxImage类库使用说明
  4. python 实现redis订阅发布功能
  5. AD17无法复制原理图到Word的解决方法
  6. 前端学习(1372):构建模块化路由
  7. 奉献一个窗口置顶的小工具
  8. java接口自动化测试的搭建_java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)...
  9. 【AS3 Coder】任务七:初涉PureMVC——天气预报功能实现
  10. 勒索团伙正奔向 SonicWall 设备
  11. 【李宏毅2020 ML/DL】P34 More about explainable AI | Attribution, Heatmap, explainable model
  12. kernel编译速度提高
  13. SSH.ASDM:远程管理
  14. 如何利用用户分层来提高运营效率?
  15. 3Dmax与BIM模型的区别
  16. 反汇编工具OD(OllyDebug)
  17. 2015,走上人生巅峰,让APK编辑器祝您一臂之力!
  18. 如何解决网上图片模糊不清,还原图片清晰度?
  19. CTF-网络信息安全攻防学习平台(脚本关)
  20. Advanced Archive Password Recovery

热门文章

  1. 安装配置Apache服务器
  2. 远程开机(外网WOL远程唤醒)
  3. 求解斐波那契数列模$p$意义下最短循环节
  4. 解决linux vi/vim或命令行出现方向键、删除出现乱码
  5. php报表插件,excel插件
  6. mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
  7. android如何实现用户注册功能,Android 实现简单的登录注册功能(SharedPreferences和SQLite)...
  8. Cisco路由器重置enable密码步骤
  9. STM32开发 -- GPS模块开发详解
  10. [在线挑战]【i春秋】渗透测试入门 —— 渗透测试笔记 --转