内容提要
Kubernetes使用存活探针和就绪探针来管理容器健康状态。存活探针用于检测容器是否需要重启,而就绪探针判断容器是否可以接收流量。重启策略包括总是重启、异常退出时重启和不重启。健康检查方法有HTTP请求、执行命令和TCP连接。实验表明,健康检查失败时,新版本Pod不会提供服务,但旧Pod仍然保留。
延伸解读
存活探针与就绪探针的核心区别
存活探针用于判断容器是否需重启,失败时Kubelet会杀死容器并根据重启策略处理;就绪探针则决定容器能否接收流量,失败时Pod会从Service的负载均衡后端移除。两者作用不同:存活探针解决应用死锁等运行异常,就绪探针确保流量只发给已准备好的Pod。理解这一区别有助于正确配置健康检查,避免误用导致服务中断或重启循环。
滚动更新中健康检查失败的影响
文章实验表明,当新版本Pod健康检查失败时,滚动更新不会继续替换旧Pod,旧Pod仍保留并继续提供服务,而新Pod虽运行但不对外服务。这得益于Deployment的滚动更新策略:默认maxUnavailable和maxSurge控制替换节奏,就绪探针失败会阻止新Pod加入Service端点,从而避免故障版本影响线上流量。这一机制为发布提供了安全缓冲。
健康检查方法与配置要点
探针支持httpGet、exec和tcpSocket三种检查方法。httpGet要求返回200-400状态码,exec要求命令退出码为0,tcpSocket要求端口可连接。配置时需注意initialDelaySeconds(首次检查延迟)、periodSeconds(检查间隔)、timeoutSeconds(超时时间)和failureThreshold(失败阈值)等参数。合理设置这些参数能避免因启动慢或短暂波动导致的误判,提升应用稳定性。
Q&A
Kubernetes中的存活探针有什么作用?
存活探针用于检测容器是否需要重启,确保应用程序在出现问题时能够继续运行。
就绪探针如何判断容器是否可以接收流量?
就绪探针判断容器是否处于就绪状态,只有所有容器就绪时,Pod才被认为是就绪的。
Kubernetes的重启策略有哪些?
重启策略包括总是重启、异常退出时重启和不重启。
健康检查的方法有哪些?
健康检查的方法有HTTP请求、执行命令和TCP连接。
如果健康检查失败,新版本的Pod会发生什么?
当健康检查失败时,新版本的Pod不会提供服务,但旧版本的Pod仍然保留。
如何实现Kubernetes的滚动更新?
通过创建新的副本控制器,调整Pod副本数量,并删除旧的副本控制器来实现滚动更新。