網站首頁 編程語言 正文
應用監控
參考?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
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-12-21 iOS開發學習TableView展現一個list實例_IOS
- 2022-07-29 python保存字典數據到csv文件的完整代碼_python
- 2022-06-20 C語言詳細講解qsort函數的使用_C 語言
- 2022-04-15 使用python測試prometheus的實現_python
- 2022-11-17 WPF利用DrawingContext實現繪制溫度計_C#教程
- 2022-09-03 docker鏡像管理命令詳解_docker
- 2022-09-15 docker倉庫登錄及配置insecure-registries的方法_docker
- 2022-05-21 Python集合set()使用的方法詳解_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支