當電腦在運行應用程式時,突然遇到當機,勢必就需要重新啟動,相對來說,當Pod裡的Container在執行應用程式的時候,可能遇到記憶體不足,造成crash,服務就需要重啟,所以在Pod的描述檔裡,就需要增加檢查機制的功能,來確定Pod有持續的運作。
Pod有Health Check檢查程式如我們所期望的方式運作,而這項功能有兩種檢驗方式:livenessProbe和readinessProbe
livenessProbe: 依據判斷的方式,來決定Container是否要重啟。
readinessProbe: 依據判斷的方式,來決定Service功能是否要將流量access到Pod
livenessProbe:
exec:
command:
- cat
- /var/www/html/index.php
livenessProbe:
httpGet:
path: /index.php
port: 80
livenessProbe:
tcpSocket:
port: 80
readinessProbe也是一樣的撰寫方式,只需要把livenessProbe做替換即可,以下會採用httpGet的方式,對livenessProbe進行demo
livenessProbe YAML定義
apiVersion: v1
kind: Pod
metadata:
name: myappformoreliveness
labels:
name: myappformoreliveness
spec:
containers:
- name: myappformoreliveness
image: httpd
resources:
limits:
memory: "512Mi"
cpu: "512m"
requests:
memory: "128Mi"
cpu: "256m"
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /index.php
port: 80
initialDelaySeconds: 5
periodSeconds: 5
nodeSelector:
name: morepods
initialDelaySeconds: 初始化時間。執行第一次檢測時,所需要的等待時間
periodSeconds: 週期性檢測
在httpd這個Container中Web Server沒有index.php這個檔案,所以會一直重啟
readinessProbe的部分會放到明日與Service一起講,因為兩者需要一起實作,才可以更能理解