一文带你了解容器探针

💡 原文中文,约3300字,阅读约需8分钟。
📝

内容提要

本文介绍了Kubernetes中的容器探针机制,包括启动、存活和就绪探针的功能和作用,探针方式有HTTP GET请求、TCP Socket检查和exec执行命令,建议根据应用类型和启动时间选择合适的探针配置。

🔎

延伸解读

启动探针:慢启动应用的守护者

对于启动时间较长或初始化复杂的应用,启动探针能有效防止存活和就绪探针过早介入导致的误判。在启动探针成功前,kubelet不会执行其他探针,避免了容器因未就绪而被频繁重启。配置时可将initialDelaySeconds和periodSeconds调低以更快感知状态,同时增大failureThreshold,为应用启动留出充足时间。

存活与就绪探针:分工明确的健康保障

存活探针关注容器主进程是否健康,失败会触发容器重启,实现故障自愈;就绪探针则决定是否将流量路由到容器,失败时从Service后端移除,避免无效请求。两者配合,既保证了服务的可用性,又实现了滚动更新时的平滑过渡。配置时建议存活探针的failureThreshold大于就绪探针,确保应用异常时先切断流量再重启。

探针配置参数:关键细节与注意事项

探针的通用参数包括initialDelaySeconds、periodSeconds、timeoutSeconds、successThreshold和failureThreshold。需注意:若periodSeconds大于initialDelaySeconds,则initialDelaySeconds会被忽略;存活和启动探针的successThreshold必须为1;terminationGracePeriodSeconds在k8s1.25以上版本新增,用于设置容器终止前的宽限时长,就绪探针无需配置此参数。

❓

Q&A

Kubernetes中的容器探针是什么?它有什么作用?

容器探针是kubelet对容器执行定期状态检查的机制,用于获取容器状态。它通过启动探针、存活探针和就绪探针来确保应用健康运行。

启动探针、存活探针和就绪探针分别有什么作用?

启动探针检测应用是否成功启动,防止其他探针过早介入;存活探针检测主进程是否正常运行,失败时重启容器实现故障自愈;就绪探针检测容器是否准备好提供服务,控制流量路由,避免无效请求。

Kubernetes探针支持哪些探测方式?

探针支持三种方式:HTTP GET请求(响应码200-399为成功)、TCP Socket检查(成功建立连接为成功)、exec执行命令(退出码0为成功)。

探针有哪些常用的配置参数?

常用参数包括:initialDelaySeconds(启动后等待时间)、periodSeconds(探测间隔)、timeoutSeconds(超时时间)、successThreshold(成功阈值)、failureThreshold(失败阈值)和terminationGracePeriodSeconds(终止宽限期)。

如何为慢启动应用配置探针?

对于慢启动应用,建议配置启动探针或为存活探针设置initialDelaySeconds,避免存活探针过早介入导致频繁重启。如果启动时间不固定,建议使用启动探针,并调低initialDelaySeconds和periodSeconds,调大failureThreshold。

存活探针和就绪探针的failureThreshold设置有什么建议?

建议将存活探针的failureThreshold设置得比就绪探针大,这样当应用出现问题时,会先切断流量(就绪探针失败),而不是立即重启容器(存活探针失败)。

🏷️

标签

➡️

继续阅读