Kubernetes 是一个开源的容器编排系统,它能够管理和自动化容器的部署、调度、扩展和运维。在 Kubernetes 上运行的应用可以是前端应用、后端应用,甚至是复杂的分布式系统。在这篇文章中,我们将讨论如何在 Kubernetes 中添加健康检查来确保应用的正常运行。
健康检查的意义
健康检查是一种监控和保护机制,它能够检测应用在特定条件下的状态和表现。在 Kubernetes 中,它特别适用于检测容器的运行状态并根据实际情况对容器进行自愈。例如,当一个容器在大量访问量下崩溃时, Kubernetes 可以自动重启该容器并将其重新加入到负载均衡器中。
在实际使用中,健康检查通常分为两种类型:
- 存活探针(Liveness Probe):用于检测容器是否仍在运行,如果容器未通过存活探针检测,则 Kubernetes 将其重启或删除。
- 就绪探针(Readiness Probe):用于检测容器是否准备好接收流量,如果容器未通过就绪探针检测,则 Kubernetes 将不会将其加入到服务端点列表中。
添加健康检查
在 Kubernetes 中,我们可以通过添加 YAML 文件的方式来定义存活探针和就绪探针。以下是一份示例 YAML 文件:
-- -------------------- ---- ------- ----------- -- ----- --- --------- ----- ----- ----- ----------- - ----- --------------- ------ ----------- ------ - -------------- ---- -------------- -------- ----- ------- ----- ---- -------------------- -- --------------- - -------------- -- ----------------- - ----------------- - --------------- -------- ----- ------ ----- ---- -------------------- -- --------------- - -------------- - ----------------- - ----------------- -
在该示例中,我们定义了一个名为 myapp
的 Pod,并在其中定义了一个名为 myapp-container
的容器。在该容器中,我们通过 ports
属性将容器的 8080 端口暴露出来,并使用 livenessProbe
和 readinessProbe
两个属性来定义存活探针和就绪探针。
存活探针
存活探针是用于检测容器是否仍在运行的探针。在示例 YAML 文件中,我们通过 httpGet
属性来定义存活探针的检测方式。其中,path
属性指定了探针发送 GET 请求时要访问的 URL,这里我们使用 /health
。port
属性指定了要访问的端口号,这里我们使用 8080。initialDelaySeconds
属性指定了探针首次检测的延迟时间,这里设置为 30 秒。timeoutSeconds
属性指定了探针检测时的超时时间,这里设置为 1 秒。periodSeconds
属性指定了探针检测的时间间隔,这里设置为 10 秒。successThreshold
属性指定了探针检测成功的最小阈值,这里设置为 1。failureThreshold
属性指定了探针检测失败的最大阈值,这里设置为 3。
如果容器在 initialDelaySeconds
秒后无法通过 httpGet
接口正常响应,或者在 timeoutSeconds
秒内连续 failureThreshold
次检测失败,则 Kubernetes 认为该容器不可用,并尝试将其重启或删除。
就绪探针
就绪探针是用于检测容器是否准备好接收流量的探针。在示例 YAML 文件中,我们仍然通过 httpGet
属性来定义就绪探针的检测方式。其中,path
属性指定了探针发送 GET 请求时要访问的 URL,这里我们使用 /ready
。port
属性指定了要访问的端口号,这里我们使用 8080。initialDelaySeconds
属性指定了探针首次检测的延迟时间,这里设置为 10 秒。timeoutSeconds
属性指定了探针检测时的超时时间,这里设置为 1 秒。periodSeconds
属性指定了探针检测的时间间隔,这里设置为 5 秒。successThreshold
属性指定了探针检测成功的最小阈值,这里设置为 1。failureThreshold
属性指定了探针检测失败的最大阈值,这里设置为 3。
如果容器在 initialDelaySeconds
秒后无法通过 httpGet
接口正常响应,或者在 timeoutSeconds
秒内连续 failureThreshold
次检测失败,则 Kubernetes 认为该容器不准备好接收流量。
总结
在 Kubernetes 中添加健康检查是保证应用正常运行的重要手段。通过定义存活探针和就绪探针,我们可以监控容器的运行状态,并在检测到异常时自动重启或删除容器。在实际使用中,我们可以通过 YAML 文件来定义健康检查。本文对于健康检查的介绍代码示例详细,方便读者学习和实践。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b091fb48841e9894cab6e1