什么是探針
探針是一種用于探測、檢測、測量或監(jiān)測某些物理或化學性質(zhì)的工具或設(shè)備,通常由一個或多個傳感器和一個數(shù)據(jù)采集和處理單元組成。探針可以被用于各種應(yīng)用,例如對生物體進行檢測、監(jiān)測環(huán)境污染、測試材料性能等。在計算機領(lǐng)域中,探針也可以指一種用于監(jiān)測應(yīng)用程序或系統(tǒng)性能的工具。
K8S的3大探針
Liveness
存活探針可以檢查容器是否存活,是否需要重新啟動容器;有助于提高應(yīng)用的可用性。
Readiness
就緒探針只有等容器可以提供服務(wù)了,才會使用K8S的服務(wù)注冊機制提供服務(wù),例如:service后端的pod,只有就緒探針沒有問題才能提供服務(wù)。(如果應(yīng)用有自己的注冊中心,這個配置估計達不到想象中的效果)
Startup
啟動探針可以了解容器何時準備啟動,如果配置了這類探針,你就可以控制容器在啟動成功后再進行存活性和就緒態(tài)檢查, 確保這些存活、就緒探針不會影響應(yīng)用的啟動。 啟動探針可以用于對慢啟動容器進行存活性檢測,避免它們在啟動運行之前就被殺掉。
K8S探針探測的4大形式
腳本
定義一組需要容器內(nèi)執(zhí)行的腳本命令
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: registry.k8s.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
執(zhí)行如下命令
/bin/sh -c "touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600"
http
container需要提供http get接口,kubelet會調(diào)用http請求,根據(jù)response status來判斷之后的操作。
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: registry.k8s.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
tcp
測試端口的連通性,判斷進程是否可用
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: registry.k8s.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
gRPC
開啟GRPCContainerProbe來支持grpc調(diào)用
apiVersion: v1
kind: Pod
metadata:
name: etcd-with-grpc
spec:
containers:
- name: etcd
image: registry.k8s.io/etcd:3.5.1-0
command: [ "/usr/local/bin/etcd", "--data-dir", "/var/lib/etcd", "--listen-client-urls", "http://0.0.0.0:2379", "--advertise-client-urls", "http://127.0.0.1:2379", "--log-level", "debug"]
ports:
- containerPort: 2379
livenessProbe:
grpc:
port: 2379
initialDelaySeconds: 10
總覽

image.png