Liveness Probe和Readiness Probe是用于检测容器状态的机制,其中Liveness Probe用于检测容器是否正常运行,Readiness Probe用于检测容器是否已经就绪。本文介绍如何配置Liveness Probe和Readiness Probe对容器进行健康检查,以便Kubernetes可以更好地监控和管理容器的运行状态,确保服务的高可用性和稳定性。
功能说明
在Kubernetes中,容器的健康检查由kubelet定期执行。kubelet通过Liveness Probe和Readiness Probe来检查容器的状态和运行情况。
探针 | 说明 | 应用场景 |
应用存活探针( 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秒执行一次检查