在 Kubernetes
中,kubelet
组件负责管理和运行每个节点上的容器。kubelet
组件包含一个名为 prober
的子组件,它是用于容器的健康检查的一部分。
prober
是 kubelet
组件的一部分,它负责执行容器的健康检查。健康检查是一种用于确定容器是否正常运行的机制。prober
会定期向容器发送健康检查请求,并根据容器的响应来确定其状态。
prober
支持多种健康检查方式,包括:
- HTTP 健康检查:向容器的指定端口发送
HTTP
请求,并根据响应的状态码判断容器的健康状态。 - TCP 健康检查:向容器的指定端口发送
TCP
连接请求,并根据连接是否成功判断容器的健康状态。 - Exec 健康检查:在容器内部执行指定的命令,并根据命令的执行结果判断容器的健康状态。
- gRPC 健康检查:与容器内的
gRPC
服务建立连接,并发送指定的gRPC
请求。根据服务端返回的响应,prober
可以确定服务是否正常运行
通过定期执行这些健康检查,prober
可以监测容器的运行状态,并及时采取相应的措施,如重启容器或报告容器的健康状态给Kubernetes
控制平面。
prober
1 | // pkg/kubelet/prober/prober.go |
1 | // pkg/kubelet/prober/prober_manager.go |
execProbe
1 | // pkg/probe/exec/exec.go |
tcpProbe
1 | // pkg/probe/tcp/tcp.go |
httpProbe
1 | // pkg/probe/http/http.go |
grpcProbe
1 | // pkg/probe/grpc/grpc.go |
启动入口
1 | // pkg/kubelet/kubelet.go |
REF:
1.pkg/kubelet/prober/prober.go
2.pkg/kubelet/prober/prober_manager.go
3.pkg/kubelet/prober/worker.go
4.pkg/probe/exec/exec.go
5.pkg/probe/tcp/tcp.go
6.pkg/probe/http/http.go
7.pkg/probe/grpc/grpc.go
8.pkg/kubelet/kubelet.go