k8s健康檢查詳解

最近在segmentfault上看到才云的一個人寫的k8s健康檢查readiness 和liveness的差別的分析,實際不忍直視。本來打算評論的。后來想想還是花點實際認真來說一下這個。當(dāng)初自己對這個也有點糊涂。記錄下來算是為后來的兄弟參考

readiness和liveness的核心區(qū)別

實際上readiness 和liveness 就如同字面意思。readiness 就是意思是否可以訪問,liveness就是是否存活。如果一個readiness 為fail 的后果是把這個pod 的所有service 的endpoint里面的改pod ip 刪掉,意思就這個pod對應(yīng)的所有service都不會把請求轉(zhuǎn)到這pod來了。但是如果liveness 檢查結(jié)果是fail就會直接kill container,當(dāng)然如果你的restart policy 是always 會重啟pod。

什么樣才叫readiness/liveness檢測失敗呢

實際上k8s提供了3中檢測手段,

  • http get 返回200-400算成功,別的算失敗
  • tcp socket 你指定的tcp端口打開,比如能telnet 上
  • cmd exec 在容器中執(zhí)行一個命令 推出返回0 算成功。
    每中方式都可以定義在readiness 或者liveness 中。比如定義readiness 中http get 就是意思說如果我定義的這個path的http get 請求返回200-400以外的http code 就把我從所有有我的服務(wù)里面刪了吧,如果定義在liveness里面就是把我kill 了。

什么時候用readiness 什么時候用readiness

比如如果一個http 服務(wù)你想一旦它訪問有問題我就想重啟容器。那你就定義個liveness 檢測手段是http get。反之如果有問題我不想讓它重啟,只是想把它除名不要讓請求到它這里來。就配置readiness。

注意,liveness不會重啟pod,pod是否會重啟由你的restart policy 控制。

關(guān)于health check 的k8s 官網(wǎng)鏈接
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.Pod Pod是k8s的最基本的操作單元,包含一個或多個緊密相關(guān)的容器,類似于豌豆莢的概念。一個Pod可以被一...
    jony456123閱讀 7,462評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 版權(quán)聲明:原創(chuàng)作品,謝絕轉(zhuǎn)載!否則將追究法律責(zé)任。 前言 最近中國和印度的局勢也是愈演愈烈。作為一個愛國青年我有些...
    李偉銘MIng閱讀 2,084評論 0 5
  • 內(nèi)容已經(jīng)移動到這里[https://blog.csdn.net/WeiPeng2K/article/details...
    weipeng2k閱讀 1,183評論 0 3
  • kubernetes 簡介 一個迅速過一遍kubernetes 非常不錯的資源:基于Kubernetes構(gòu)建Doc...
    bradyjoestar閱讀 15,299評論 2 7