欢迎光临散文网 会员登陆 & 注册

深究Kubernetes源码-Kubelet-4 Liveness/Readiness/Startup流程分析

2022-09-23 11:11 作者:黑暗光影DIY  | 我要投稿

基于kubernetes1.26

1 功能和模块

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

Kubernetes共支持3种类型的Probe:

  • Liveness:探测Container何时需要重启,例如Container内App运行遇到了死锁,进程不响应等,Kubelet会重启容器

  • Readiness:探测Container何时准备就绪,可以接受请求,当Readiness成功后,Pod将成为Service的Backend接受请求流量

  • Startup:探测Container何时启动成功,只有Startup成功后,才会开始Liveness和Readiness探测,避免Liveness/Readiness干扰容器启动,或拖慢容器启动速度,或者因为容器启动慢导致容器启动成功前因Liveness失败被Kubelet重启

目前共支持4种探测方式:

  • Exec: 执行一个命令进行探测

  • HTTPGet:发送Http Get探测请求

  • TCPSocket:使用TCP协议向某个TCP端口发送探测请求

  • GRPC(1.24Beta):使用GRPC协议向某个端口发送探测请求

看下核心模块k8s.io/kubernetes/pkg/kubelet/prober/manager类图,主要包括3部分

  • worker,每一个pod定义的每一个Probe都会启动一个worker.run协程进行探测,

  • prober,为具体探针,包含4种探测方式

  • resultManager,保存探测结果

2 流程分析

在kubelet Pod处理主流程分析中,syncLoopIteration处理Pod的3个来源就包括Liveness/Readiness/StartupProbe,在kubelet.syncPod,会调用probeManager.AddPod为Pod注册并启动对应的Probe协程,当状态发生变化时再通过Channal将结果推送回syncLoopIteration主流程处理


深究Kubernetes源码-Kubelet-4 Liveness/Readiness/Startup流程分析的评论 (共 条)

分享到微博请遵守国家法律