K8s核心资源对象-Pod(健康检查)
K8s核心资源对象-Pod(健康检查)
基于1.25
什么是健康检查
K8s支持三种健康检查:
- livenessProbe:存活探针
- 表示容器是否在运行,是否需要重启
- 如果liveness探测为Failure,kubelete会终止容器,按照策略重启
- readinessProbe:就绪探针
- 表示容器是准备好接受请求
- 如果readiness探测失败,从Endpoint控制器种移除改PodIP
- startupProbe:启动探针
- 设置了启动探针,其他的被暂时禁用,直至启动探针成功
- 启动探针失败,按照策略重启
- 对于启动时间长的场景
ProbeManager
ProbeManager负责管理Pod探针,是一个Manager的接口声明。
- 当执行AddPod func,会为Pod每一个容器创建一个探测的worker
- worker会对分配的容器,定期周期性探测,并且缓存探测结果
- 执行UpdatePodStatus func,Manager会使用缓存结果把PodStatus设置类似Ready状态
相关接口说明:
- AddPod:为Pod每个容器添加对应的探测worker
- StopLivenessAndStartup:停止指定容器Pod的所有容器的存活探针和启动探针
- RemovePod:移除指定Pod中的所有容器的worker
- CleanupPods:清理不再运行的Pod保留追定UID的Pod以及正在运行的worker
- UpdatePodStatus:根据容器状态、缓存的探测结果和worker状态,修改给定Pod状态
- Ref:https://github.com/kubernetes/kubernetes/blob/88e994f6bf8fc88114c5b733e09afea339bea66d/pkg/kubelet/prober/prober_manager.go#L69
|
探针的数据结构
// Probe describes a health check to be performed against a container to determine whether it is |
四种探测模式
命令行
在kubelete在容器内使用cmd,命令行进行探测
执行成功 返回值0=存活
非0,容器终止重启
Command参数是在容器内执行的命令行
- 容器的工作目录是容器文件系统的根目录/
- 命令简单执行,不在shell里面,需要显式调用shell
HTTP
基于使用HTTP GET请求进行探测:
- 返回>=200 &<=400 =success
- 其他都是failed
相关字段:
-
// HTTPGetAction describes an action based on HTTP Get requests.
type HTTPGetAction struct {
// Optional: Path to access on the HTTP server.
// +optional
// 访问HTTP的Path
Path string
// Required: Name or number of the port to access on the container.
// +optional
// 访问容器的端口名称或者端口号
Port intstr.IntOrString
// Optional: Host name to connect to, defaults to the pod IP. You
// probably want to set "Host" in httpHeaders instead.
// +optional
// 连接的主机名,默认PodIP
Host string
// Optional: Scheme to use for connecting to the host, defaults to HTTP.
// +optional
// 协议,默认HTTP
Scheme URIScheme
// Optional: Custom headers to set in the request. HTTP allows repeated headers.
// +optional
// 自定义请求头
HTTPHeaders []HTTPHeader
}
TCP
容器尝试执行TCP检查
端口打开,成功
如果远程容器打开连接,立即关闭也是成功
// TCPSocketAction describes an action based on opening a socket |
gRPC
gRPC还在beta阶段,必须启用GRPCContainerProbe特性才能用
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论