k8s探针检测php,K8S教程(7)使用探针对容器进行健康检查
應用在運行過程不可避免會出現各種問題導致服務不可用的情況發生,K8S的Health Check健康檢查機制可以對這些異常服務進行重啟、剔除等操作,保障高可用。
一、K8S的健康檢查探針
K8S的探針主要有3種,主要是探測的階段不同:
1、readiness probes:容器就緒檢查,用于檢查容器是否能接收到流量,只有當狀態正常才會加入到services中
2、liveness probes:在線檢查機制,用于檢查應用是否可用,如出現無法響應、死鎖等異常時自動重啟容器,能一定程度實現運維自動化
3、starup probes:啟動檢查機制,避免一些需要長時間啟動的容器被前面的探針殺掉。該探針排在首位,直到它工作完成才會進行另外2種探針的探測
二、K8S探針工作方式
1、exec方式:設置一個命令作為探查命令,對其返回結果做判斷
該示例會創建?個容器,容器啟動時創建/tmp/liveness-probe.log,然后10秒后將其刪除。通過liveness探針的exec方法去執行命令ls -l /tmp/liveness-probe.log,通過?件返回碼判斷健康狀態。如果返回碼?0會?動將該容器重啟
cat centos-exec-liveness-probe.yaml
apiVersion: v1
kind: Pod
metadata:
name: exec-liveness-probe
annotations:
kubernetes.io/description: "exec-liveness-probe"
spec:
containers:
- name: exec-liveness-probe
image: centos:latest
imagePullPolicy: IfNotPresent
args: #容器啟動命令,?命周期為30s
- /bin/sh
- -c
- touch /tmp/liveness-probe.log && sleep 10 && rm -f /tmp/liveness-probe.log && sleep 20
livenessProbe:
exec: #健康檢查機制,通過ls -l /tmp/liveness-probe.log返回碼判斷容器的健康狀態
command:
- ls
- l
- /tmp/liveness-probe.log
initialDelaySeconds: 1 #初始探測時間,可以設大一點,防止應用還沒啟動就被認作失敗
periodSeconds: 5 #每次探測間隔
timeoutSeconds: 1 #探測超時時間,超時則失敗
2、httpGet方式:主要?于web場景,對容器內指定的URL發送http請求,然年后根據返回碼判斷容器健康狀態,返回碼?于4xx即表示健康:
# 定義?個nginx應?,通過探測http://:port/index.html的?式判斷健康狀態
cat nginx-httpGet-liveness-readiness.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-httpget-livess-readiness-probe
annotations:
kubernetes.io/description: "nginx-httpGet-livess-readiness-probe"
spec:
containers:
- name: nginx-httpget-livess-readiness-probe
image: nginx:latest
ports:
- name: http-80-port
protocol: TCP
containerPort: 80
livenessProbe: #健康檢查機制,通過httpGet實現實現檢查
httpGet:
port: 80
scheme: HTTP
path: /index.html
initialDelaySeconds: 3
periodSeconds: 10
timeoutSeconds: 3
3、tcp連接:以能否與容器建立tcp連接為判斷
總結
以上是生活随笔為你收集整理的k8s探针检测php,K8S教程(7)使用探针对容器进行健康检查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电容与电池的主要区别说明
- 下一篇: SSL基本概念