K8S的探针笔记

发布于 14 天前  16 次阅读


类型

  1. 启动探针 startup

检测容器内进程是否已经启动完成并完成初始化。在启动探针未就绪前,存活探针以及就绪探针不会生效,避免在容器启动期间,还未完全启动完成,但就绪探针或存活探针已开始工作,导致探针检测失败,重启容器。

检测成功:开始执行存活探针或就绪探针

检测失败:根据重启策略决定是否重启容器

检测未知:静默

仅在pod启动时,执行一次。

  1. 就绪探针 readliness

检测容器是否已经准备好对外提供服务。当就绪探针探测成功时,表示容器内部程序已经做好对外提供服务的准备,kubectl会将该容器标记为“就绪”状态,service会将容器IP添加到后端服务列表,转发流量到该容器。

检测成功:将容器标记为就绪状态,转发流量到该容器

检测失败:停止转发流量到该容器

检测未知:静默

在整个pod的生命周期中,周期性运行。

  1. 存活探针 liveness

检测容器是否处于存活状态,可以对外提供服务。当存活探针检测到服务不可用时,会根据pod的重启策略来决定是否重启容器。

检测成功:静默

检测失败:根据重启策略决定是否重启容器

检测未知:静默

在整个pod的生命周期中,周期性运行。

参数

  • initialDelaySeconds:启动探针前需要等待的秒数
  • periodSeconds:探针检测的频率
  • timeoutSeconds:将探针标记为超时(未通过运行状态检查)之前的秒数
  • successThreshold:探针需要通过的最小连续成功检查数量
  • failureThreshold:将探针标记为失败之前的重试次数

检测类型

  1. http

发生http请求到endpoint,检测2xx和3xx的响应

参数:

  • host:要连接的主机名(默认值:pod 的 IP)
  • port:端口号,必须
  • path:服务器上的路径
  • scheme:使用的协议,http或https
livenessProbe:
	httpGet:
		port: 8080
		path: /healthz
  1. TCP

检查tcp端口状态,对于不适合http探针的gRPC或FTP服务器,可以使用TCP探针

参数:

  • port:端口号,必须
  • host:要连接的主机名(默认值:pod 的 IP)
readinessProbe:
	tcpSocket:
		port: 21
  1. Command

通过运行shell命令来检查pod情况,如果命令返回的退出代码为0,则通过检查。如果不希望公开 HTTP 服务器与端口,或者希望通过命令检查初始化步骤(例如,检查是否已创建配置文件、运行 CLI 命令),这种类型的探针会很有用。

readinessProbe:
  exec:
    command: ['/bin/sh', '-c', 'cat /etc/healthz']