K8S系列之探針

什么是探針

探針是一種用于探測、檢測、測量或監(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容