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秒執行一次檢查