【第三集】Kubernetes 最佳实践:健康检查
这是最佳实践的第三部。
你好,我是杰克。
好了,第三篇了。这次我们来谈谈Kubernetes的健康检查。
代码并不多,可能会比上一篇有点冗长,但我们还是来试试看吧。
每次的事情,官方博客在这里。
Kubernetes 最佳实践:使用就绪和存活性探针设置健康检查。
太长不看
-
- 分散システムにhealth checkは欠かせないものである、Kubernetesもまた例外ではない
-
- Kubernetesのhealth checkの種類は2つ
Readiness
Liveness
Health checkプローブの種類は3つ
HTTP Probes
Command Probes
TCP Probes
LivenessのinitialDelaySecondsに要注意
再多提供一些细节
健康检查是必不可少的
由于分散系统涉及多台计算机(虚拟机)各自承担角色,因此管理工作非常复杂。我们需要构建一种系统,它能感知异常并自动恢复,例如在某一台计算机发生故障时,不会导致全部系统崩溃,而是能转移流量等操作来实现自动恢复。
为了做出这种恰当的回应,进行健康检查可以说是确认系统是否正常运行的最简单方式。
在Kubernetes中,Pod在成功启动后开始发送流量,并且在崩溃时重新启动,这是默认设置。虽然这是令人高兴的,但并不完美。因此,本次我们将介绍构建更强大系统所需的Kubernetes健康检查配置知识。
体检的种类
在Kubernetes中,有两种类型的健康检查,需要了解它们的区别。
1. 准备就绪
Readiness探针用于向Kubernetes通知应用程序已成功启动并准备好接收流量。如果成功,Kubernetes将开始将流量发送到该Pod;如果失败,Kubernetes可以暂时停止将流量发送到该Pod,直到成功为止。
在什么情况下使用?
通常情况下,Kubernetes会在确认Pod容器已成功启动后立即开始发送流量。但如果是启动时间较长的应用程序呢?在Kubernetes的正常行为中,应用程序在准备好之前就开始接收流量了。这时,就轮到Readiness Probe登场了。通过使用Readiness Probe,我们可以告诉Kubernetes在Pod准备就绪之前不要发送流量,而是等待一下。
活力
一方面,活动探针用于向Kubernetes通知应用程序的正常或异常情况。如果失败,将删除Pod并启动新的Pod来进行替换。
需要在什么情况下使用
假设应用程序存在死锁问题。在这种情况下,应用程序将无法继续下一步处理并变得僵死。然而,Kubernetes不知道应用程序的行为,而认为Pod正常运行。因此,即使应用程序已经僵死,它仍然会不断向该Pod发送请求。
在这种情况下,我们应该使用Liveness探针。通过向Kubernetes传达应用程序已经死亡的消息,我们可以重新启动它。
探针的种类 de
好的,我們已經查看了健康檢查的種類,現在來看一下實際上有哪些種類的探針。總共有三種種類。
超文本传输协议
首先,我们有HTTP。这是一种最常用的探针类型。
即使应用程序不是基于HTTP服务器,它也是最方便易用的探针类型,因为它非常容易启动。
-
- HTTPレスポンスで判断
2XX、3XXのレスポンス healthy
それ以外が unhealthy
命令
命令探针(Command probe)在Kubernetes中执行命令并在容器内部运行。
-
- exit codeで判断
0 の時は healthy
それ以外は unhealthy
传输控制协议 (TCP)
最终,通过进行TCP连接探测来确定。
-
- TCPコネクションで判断
繋がれば healthy
繋げられなければ unhealthy
总结
我已经看过了健康检查的类型和探针的类型,有很多种呢。利用这些知识,我们可以创建一个更为坚固的基础和稳定的系统,不是吗?
另外,关于Probe更详细的设置已经在官方文档中以简明易懂的方式写明,请随意参考。
那么,下次再见。