K8s中Pod健康检查源代码分析( 四 )


kubelet.go中Run方法

...
kl.probeManager.Start() //启动探测服务...

2.看一下probeManager都做了哪些事情

prober_manager.go中我们看一下这段代码:

这是一个Manager的接口声明 , 该Manager负载pod的探测 。 当执行AddPod时 , 会为Pod中每一个容器创建一个执行探测任务的worker 该worker会对所分配的容器进行周期性的探测 , 并把探测结果缓存 。 当UpdatePodStatus方法执行时 , 该manager会使用探测的缓存结果设置PodStatus为近似Ready的状态:

3.一“探”究竟

先看一下探测的struct

initialDelaySeconds: 表示容器启动之后延迟多久进行liveness探测

timeoutSeconds:每次执行探测的超时时间

periodSeconds:探测的周期时间

successThreshold:最少连续几次探测成功的次数 , 满足该次数则认为success 。

推荐阅读