Kubernetes 筆記 04 架構是個好東西

本文首發於個人公衆號 Linux雲計算網絡(id: cloud_dev),專一於乾貨分享,號內有 10T 書籍和視頻資源,後臺回覆**「1024」**便可領取,歡迎你們關注,二維碼文末能夠掃。html

Hi,你們好,歡迎你們和我一塊兒學 K8S,這是系列第 4 篇。數據庫

任何技術的誕生,都會經歷從架構設計到開發測試的過程,好的技術,每每也會有一套好的架構。架構是個好東西,它能幫助咱們站在高處看清楚事物的總體結構,避免過早地進入細節而迷失方向。編程

上篇文章掃清了 K8S 的一些基本概念,今天這篇文章咱們就來看看 K8S 的架構。後端

先上圖:api

圖中包括兩種類型的節點:Master 和 Node,每一個節點上運行着多種 K8S 服務。網絡

Master 節點

Master 是 K8S 集羣的大腦,運行着以下 Daemon 服務:kube-apiserver、kube-controller-manager、kube-scheduler、etcd 等。架構

API Server

若是把 K8S 環境看做是一個公司,那 API Server 就是這個公司的基礎平臺部,是公司最爲核心的技術能力輸出出口。它對外提供 HTTP/HTTPS REST API,統稱 K8S API,能夠供各種客戶端工具(CLI 或 WebUI)、K8S 其餘組件,以及第三方的平臺接入。對內提供了 K8S 各種資源(如 Pod、Deployment、Service等)的增刪改查和監控等操做,是集羣內各個功能模塊之間數據交互和通訊的中心樞紐。負載均衡

Controller Manager

Controller Manager 更像是公司的人力資源部,負責統籌公司的人員分佈。它管理着 K8S 各種資源的生命週期,保證資源處於預期狀態,若是現有狀態和預期狀態不符,它會自動化執行修正。分佈式

Controller Manager 由多種 Controller 組成,包括 Replication Controller、Node Controller、ResourceQuota Controller、Namespace Controller、ServiceAccount Controller、Service Controller、Token Controller 及 Endpoint Controller 等。每種 Controller 都負責一種具體的資源管控流程,而 Controller Manager 正是這些 Controller 的核心管理者。工具

Scheduler

Scheduler 則像是公司各個部門的項目經理之類的角色,負責將具體的人力放到他們擅長的位置上,知人善用。具體來講,Scheduler 負責將待調度的 Pod 對象按照特定的調度策略綁定到集羣中某個合適的節點上,調度策略會綜合考慮集羣的拓撲結構、節點的負載狀況、以及應用對高可用、性能、數據親和性的需求。

etcd

etcd 是一個高可用的分佈式數據庫,負責保存 K8S 的配置信息和各類資源的狀態信息。當數據發生變化時,etcd 會及時告知集羣中的其餘組件。

kubectl

kubectl 是 K8S 的 CLI 工具,這是使用 K8S API 創建的一套命令行工具,使用它,能夠很是方便地管理 K8S 集羣。

Node 節點

Node 是 K8S 集羣的具體執行者,也運行着多種服務,如:kubelet、kube-proxy、container runtime、Pod 網絡等。Node 能夠看做是 Master 的代理,負責處理 Master 下發到本節點的任務,管理 Pod 和 Pod 中的容器,按期向 Master 彙報自身資源的使用狀況。

kubelet

kubelet 更像是部門中各個小組的 Leader,對外從 API Server 拿資源,對內負責小組內各類資源的管理,好比從 Master 拿到 Pod 的具體配置信息(image、Volume 等)以後,kubelet 根據這些信息建立和運行容器。

kube-proxy

kube-proxy 則像穿插在公司各個部門之間的接口人,對內和內部人員溝通,對外協調部門之間的各類事宜,展現部門風采。kube-proxy 做用於 Service,經過前面學習,咱們知道 Service 是對一組 Pod 的抽象,統一對外提供某種服務,當外部訪問 Service 時,其實是須要訪問 Service 所管轄的 Pod 中的容器,kube-proxy 在這裏就是負責將訪問 Service 的數據流轉發到後端的容器,若是有多個副本,kube-proxy 會實現負載均衡。

cAdvisor

cAdvisor 對 Node 上的資源進行實時監控和性能數據採集,包括 CPU 使用狀況、內存使用狀況、網絡吞吐量及文件系統使用狀況等。cAdvisor 集成在 kubelet 中,當 kubelet 啓動時會自動啓動 cAdvisor,一個cAdvisor 僅對一臺 Node 機器進行監控。

container runtime

container runtime 是真正運行容器的地方,爲容器提供運行環境,主流的三種 container runtime 是 lxc、runc 和 rkt,K8S 都支持它們,但經常使用的事 runc,緣由是 runc 是 Docker 默認的 runtime。在 K8S 的容器應用中,Docker 是主流。

OK,K8S 架構介紹就到此爲止。

最後,仍是繼續送書,容器網絡專家倪朋飛寫的《K8S 指南》電子書,若有須要後臺回覆「K8S」(以前回復過就不用回覆了)。如需加羣學習回覆「加羣」。

下文咱們開始對 K8S 的說明書一探究竟。


個人公衆號 「Linux雲計算網絡」(id: cloud_dev) ,號內有 10T 書籍和視頻資源,後臺回覆 「1024」 便可領取,分享的內容包括但不限於 Linux、網絡、雲計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎你們關注。

原文出處:https://www.cnblogs.com/bakari/p/10502293.html

相關文章
相關標籤/搜索