当前位置 - 養生大全網 - 健康養生 - kubelet的工作流程

kubelet的工作流程

Kubernetes是壹個分布式集群管理系統。每個節點都必須運行壹個worker來管理容器的生命周期。這個工人計劃是?庫伯萊.

簡而言之,庫伯萊?的主要功能是獲取節點上pod/container的預期狀態(運行什麽容器,運行多少份,如何配置網絡或存儲等。)定期從某個地方,調用相應的容器平臺接口,達到這個狀態。

除了這個核心功能,kubelet還有許多其他功能:

*定期向apiserver報告當前節點狀態,以便調度。

*?清理鏡像和容器,確保節點上的鏡像不會占用全部磁盤空間,退出的容器不會占用太多資源。

*運行HTTP服務器以提供節點和pod信息,包括調試信息(如果處於調試模式)。

*等待...

在集群狀態下,kubelet會從主節點讀取信息,但實際上,kubelet也可以從其他地方獲取節點的pod信息。目前,kubelet支持三種數據源:

*?本地文件

*?通過url從網絡上的地址獲取信息。

*?Apisherver:從kubernetes主節點獲取信息。

就被管理的對象而言,kubelet目前支持docker和rkt,默認使用docker。

Pod管理

在kubernetes的設計中,最基本的管理單元是pod,而不是容器。Pod是kubernetes在容器上的壹層包裝,它由壹組在同壹主機上運行的壹個或多個容器組成。如果把容器比作傳統機器上的壹個進程(它可以執行任務,並對外提供壹些功能),那麽pod就可以比作傳統的主機:它包含多個容器,並為它們提供壹些資源。

我們之所以不厭其煩地提供這層封裝,主要是因為容器的推薦用法是只有壹個進程在裏面運行,壹般來說,壹個應用程序是由多個組件組成的。

pod中所有容器最大的特點和好處就是* * *享有大量的資源,比如網絡空間。pod * * *下的所有容器都享有網絡和端口空間,也就是可以通過?本地主機?訪問和通信,對外的通信方式是壹樣的,省去了很多容器通信的麻煩。

除了網絡,pod中定義的卷也可以掛載在多個容器中以達到* * *。

最後,pod中定義的資源限制(比如CPU和內存)也是所有容器共享的。

集裝箱健康檢查

在創建容器之後,kubelet還應該檢查容器是否正常運行。如果容器運行不正確,應該按照設置的重啟策略進行處理。檢查容器是否健康的方法主要有三種:執行命令,es項目集成到kubelet中,無需額外配置。默認情況下,您可以使用?localhost:4194?地址見cAdvisor的管理界面。

除了系統使用的CPU、內存、存儲和網絡,cAdvisor還記錄了每個容器使用的上述資源。

入口程序

cmd/kublet/kubelet.go?-& gt;?主要方法

1.創建kubeletFlags數據結構(對應kubelet命令行參數);

2.創建庫刪除配置數據結構;

3.創建壹個kubeletServer數據結構,包括kubeletFlags和kubeletConfigration;

4.啟動kubelet配置控制器,啟動配置和狀態的循環同步;

5.創建kubeletDeps數據結構;

發起人

cmd/kubelet/app/server.go?-& gt;?運行方法

1.判斷kubelet是否以單機模式運行;

2.創建對象kubeClient和evnetClient來與apiserver通信。heartbeatClient、externalkubeClient、ContainerManager並設置OOM。

3.?打電話給朗庫伯萊特。運行kubelet,這個函數會啟動goroutine壹直運行,這裏是執行kubelet核心函數的地方。