一文带你了解容器探针
内容提要
本文介绍了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设置得比就绪探针大,这样当应用出现问题时,会先切断流量(就绪探针失败),而不是立即重启容器(存活探针失败)。