日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

k8s應用監控探針詳解_云其它

作者:wffeige ? 更新時間: 2023-06-20 編程語言

應用監控

參考?https://www.jb51.net/article/241418.htm

在pod之上 添加一個探針, kubelet通過探針去檢查應用

pod狀態轉換

pod的啟動流程?

  • schduler環節 先綁定節點
  • kubelet接管
    • 準備CNI CSI CRI
    • 啟動pod中的container
    • 啟動探針
    • 存活探針
      • 監測pod是否健康
    • 就緒探針

容器式運行的應用類似于“黑盒”,默認不會配置探針時 所以kublet只會監視pod的存活狀態(但是無法檢查是否處于正常的服務 對于pod不處理請求的情況無法檢查 不能執行一些高級的檢查)

為了便于k8s對其進行監測,云原生應用應該輸出用于監視自身的API

  • 包括健康狀態、指標、分布式跟蹤和日志等
  • 最基本要提供用于健康狀態監測的API

Pod支持的監測類型(健康探針)

  • startup Probe 啟動探針,用來檢查應用是否已經啟動成功,適合那些有大量初始化工作要做,啟動很慢的應用
  • liveness Probe 存活探針,用來檢查應用是否正常運行,是否存在死鎖、死循環
  • readiness Probe 就緒探針,用來檢查應用是否可以接收流量,是否能夠對外提供服務。

監測機制

  • Exec Action:執行一個 Linux 命令看狀態碼,根據指定命令的結果狀態碼判定,
  • TcpSocket Action:使用TCP協議嘗試連接容器的指定端口,根據相應TCP套接字連接建立狀態判定
  • HTTPGet Action:連接端口并發送 HTTP GET 請求, 根據指定https/http服務URL的響應結果判定

配置參數

initialDelaySeconds

periodSeconds: 執行探測動作的時間間隔,默認是 10 秒探測一次。

timeoutSeconds: 探測動作的超時時間,如果超時就認為探測失敗,默認是 1 秒。successThreshold: 連續幾次探測成功才認為是正常,對于 startupProbe 和 livenessProbe 來說它只能是 1。

failureThreshold: 連續探測失敗幾次才認為是真正發生了異常,默認是 3 次。

示例

同時定義了三種探針

  • startup使用Exec Action
  • liveness和readiness使用HTTPGet Action

測試效果

  • liveness
    • URL "/livez" 支持以POST方法為livez參數設定不同值,非OK值都以5xx響應碼響應;
  • readiness
    • URL "/readyz" 支持以POST方法為readyz參數設定不同值,非OK值都以5xx響應碼響應;

image pull policy 鏡像管理策略

Always 無論本地是否有相關的鏡像 總是要到registry上下載 - 缺點 浪費帶寬 - 好處 避免本地污染

if not present 本地不存在相關的image是 才去registry上下載 - 好處 運行快 - 缺點 可能被污染 never 從不下載

特殊情況 image 的tag是latest

apiVersion: v1
kind: Pod
metadata:
    name: pod-probe-demo
    namespace: default
spec:
    containers: 
    - name: demo
    image: ikubernetes/demoapp:v1.0
    imagePullPolicy: IfNotPresent
    startupProbe:
        exec:
            command: ['/bin/sh','-c','test','"$(curl -s 127.0.0.1/livez)"=="OK"']
        initialDelaySeconds: 0
        failureThreshold: 3
        periodSeconds: 2
    livenessProbe:
        httpGet:
            path: '/livez'
            port: 80
            scheme: HTTP
        initialDelaySeconds: 3
        timeoutSeconds: 2
    readinessProbe:
        httpGet:
            path: '/readyz'
            port: 80
            scheme: HTTP
        initialDelaySeconds: 15
        timeoutSeconds: 2
    restartPolicy: Always

原文鏈接:https://juejin.cn/post/7204389419700060215

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新