使用探针对容器进行健康检查
本文介绍如何配置Liveness Probe和Readiness Probe,对容器进行健康检查。
功能说明
Kubernetes中,容器的健康检查由kubelet定期执行,kubelet通过存活探针和业务探针来检查容器的状态和运行情况。
探针 | 说明 | 应用场景 |
应用存活探针( Liveness Probe) | 用于检查容器是否正常运行。如果检查成功,则表示容器正常运行。如果检查失败,系统会根据配置的容器重启策略进行相应的处理。如果未配置该探针,则默认容器一直正常运行。 |
|
应用业务探针(Readiness Probe) | 用于检查容器是否已经就绪,可以为请求提供服务。如果检查成功,则表示容器已经准备就绪,可以接收业务请求。如果检查失败,则表示容器没有准备就绪,系统将停止向该容器发送任何请求,直至重新检查成功。 | 如果应用程序暂时无法对外部流量提供服务,例如应用程序需要在启动期间加载大量数据或配置文件,此时,如果不想终止应用程序,也不想向其发送请求,可以通过Readiness Probe来检测和缓解这种情况。 |
配置说明
您可以通过容器的livenessProbe和readinessProbe字段来设置Liveness Probe或者Readiness Probe。更多信息,请参见配置存活、就绪和启动探测器。
配置示例如下:
示例一:设置Liveness Probe
apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: nginx-test labels: app: nginx alibabacloud.com/eci: "true" spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 #设置Liveness Probe,通过命令行方式进行检查 livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 #容器启动5秒后开始检查 periodSeconds: 5 #每5秒执行一次检查
示例二:设置Readiness Probe
apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: nginx-test labels: app: nginx alibabacloud.com/eci: "true" spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 #设置Readiness Probe,通过命令行方式进行检查 readinessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 #容器启动5秒后开始检查 periodSeconds: 5 #每5秒执行一次检查