在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。部分内容是他的研究成果以及智慧结晶。
原文链接:https://medium.com/metrosystemsro/kubernetes-readiness-liveliness-probes-best-practices-86c3cd9f0b4a

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

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

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

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

    我们在上一篇文章中学习了 Kubernetes–k8s-滚动更新–零停机不停服发布服务 里面涉及到 使用 存活探针和 就绪探针. 但是 这两个探针 具体怎么设置,是不是用同一个 api作为检查点,还是 ...

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

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

  4. Kubernetes Ingress 日志分析与监控的最佳实践

    2019独角兽企业重金招聘Python工程师标准>>> 前言 目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,越来越多的企业开始将服务构建在K ...

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

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

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

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

  7. Kubernetes 存活、就绪和启动探针

    Kubernetes主要有三中探针:存活(Liveness).就绪(Readiness)和启动(Startup)探针. kubelet 使用存活探针来确定什么时候要重启容器. 例如,存活探针可以探测到 ...

  8. K8s之就绪探针和存活探针

    前言:集群中自带两种探针方式,先演示下各种探针的使用方法和功能表现 就绪探针(判断是否就绪,状态栏READY) 测试pod apiVersion: v1 kind: Pod metadata:name ...

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

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

最新文章

  1. .NET 导出Excel
  2. 反思快速的理解需求与业务
  3. C++ 类模板语法初步01
  4. CPU:别再拿我当搬砖工!
  5. 抽象类中不能有private的成员_【java基础】-- java接口和抽象类的异同分析
  6. 杨笠代言电脑遭投诉抵制,网友吵翻!英特尔回应了...
  7. python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!-Go语言中文社区...
  8. java知识点3(null)
  9. foxmail邮件加载失败重试_Foxmail提示错误的解决方案
  10. Linux动态链接库隔离,Linux下的.so文件是动态链接库
  11. movielens1M数据处理
  12. fxp连接失败_用FlashFXP时总是连接失败(连接丢失)是什么原因
  13. python中def fun()是什么意思_PYTHON练习-def函数的基础
  14. 编辑中的word变成只读_教大家word文档变成只读模式怎么改
  15. 再见,996!程序员开源考公指南火了:三人已成功上岸!
  16. bitbucket配置_如何配置Bitbucket的ssh
  17. 矩阵转置算法 oracle,请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函...
  18. C语言(PTA习题)7-3 数字三角形
  19. Jenkins+Pipline+Docker 自动部署SpringBoot项目流程
  20. 1.DLL注入相关概念

热门文章

  1. 快速扫描3D建模技术,仅仅只需要这三个步骤
  2. 使用node+vue.js实现SPA应用,解决了SPA应用的最大缺点SEO
  3. 一些特殊字符的英文读法(ASCII 码, 希腊字母、符号)
  4. Anaconda下载simpleITK包和pytorch包
  5. linux mint 17 输入法,LinuxMint17.1 Rebecca中安装设置输入法
  6. zblog php换域名,zblog 怎么更换域名
  7. Burnside引理Pólya定理
  8. iOS代码质量要求_图片压缩(iOS)
  9. [Win10] 代理服务器出现问题或地址有误
  10. POJ - Frogs' Neighborhood(Havel-Hakimi)