Health Check - 天天5分鐘玩轉 Docker 容器技術(142)

強大的自愈能力是 Kubernetes 這類容器編排引擎的一個重要特性。自愈的默認實現方式是自動重啓發生故障的容器。除此以外,用戶還能夠利用 Liveness 和 Readiness 探測機制設置更精細的健康檢查,進而實現以下需求:html

  1. 零停機部署。安全

  2. 避免部署無效的鏡像。服務器

  3. 更加安全的滾動升級。app

下面經過實踐學習 Kubernetes 的 Health Check 功能。學習

默認的健康檢查

咱們首先學習 Kubernetes 默認的健康檢查機制:spa

每一個容器啓動時都會執行一個進程,此進程由 Dockerfile 的 CMD 或 ENTRYPOINT 指定。若是進程退出時返回碼非零,則認爲容器發生故障,Kubernetes 就會根據 restartPolicy 重啓容器。rest

下面咱們模擬一個容器發生故障的場景,Pod 配置文件以下:code

Pod 的 restartPolicy 設置爲 OnFailure,默認爲 Alwayshtm

sleep 10; exit 1 模擬容器啓動 10 秒後發生故障。blog

執行 kubectl apply 建立 Pod,命名爲 healthcheck

過幾分鐘查看 Pod 的狀態:

可看到容器當前已經重啓了 3 次。

在上面的例子中,容器進程返回值非零,Kubernetes 則認爲容器發生故障,須要重啓。但有很多狀況是發生了故障,但進程並不會退出。好比訪問 Web 服務器時顯示 500 內部錯誤,多是系統超載,也多是資源死鎖,此時 httpd 進程並無異常退出,在這種狀況下重啓容器多是最直接最有效的解決方案,那咱們如何利用 Health Check 機制來處理這類場景呢?

答案就是 Liveness 探測,咱們下一節學習。

書籍:
1.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html

相關文章
相關標籤/搜索