Kubernetes 核心概念

推薦閱讀:數據庫

在本文中,咱們將介紹基本的Kubernetes概念。Kubernetes的術語不少,可能會使人生畏。後端

我將幫助您創建一個思惟模型,以加快對技術的瞭解。服務器

首先,咱們將研究6層抽象及其組成的各個部分。而後,咱們將看看其餘7個關鍵的 K8s API對象。併發

1、K8s 的 6 層抽象

1)Deployment負載均衡

2)ReplicaSet框架

3)Pod分佈式

4)Node Cluster高併發

5)Node Processesspa

6)Docker Container命令行

Deployment 建立和管理 ReplicaSet。

ReplicaSet 建立和管理 Pod。

Pod 運行於 Node 中,一個 Node 中一般會運行多個 Pod。

Node 中有 Container 運行時環境,並運行放置在 Docker 鏡像中的應用程序。

藍色部分是高層次的 K8s 抽象,綠色部分描述的是 Node 以及其中的 Node 子進程。

Deployment

若是你想建立一直運行的無狀態應用,例如 HTTP server,就須要 Deployment。

Deployment 容許您無縫升級運行中的應用。

Deployment 中指定了 Pod 死掉後重啓的策略。

能夠經過命令行建立 Deployment,也能夠經過配置文件。

ReplicaSet 複製集

Deployment 會建立一個 ReplicaSet,ReplicaSet 會確保你的 APP 具備指定數量的 Pod。

ReplicaSet 根據 Deployment 中設定的指標來建立和擴展 Pod。

Pod

Pod 是 K8s 中的基本構建單元。

一個 Pod 中能夠包含多個 Container,但一般是包含一個。

Pod 負責處理容器的數據卷、密鑰、配置。

Pod 的生命週期是不肯定的,可能很是短暫,但 Pod 具備很強的再生能力,在死後能夠自動從新啓動。

當 ReplicaSet 對 APP 進行水平擴展的時候,就會複製 Pod,每一個 Pod 運行相同的容器代碼。

Pod 生存在 Worker Node 上。

Node Cluster

K8s 羣集由 Master Node(主節點)Worker Node(工做節點) 組成。

下圖是集羣結構描述圖,一個 Worker Node 中能夠運行多個 Pod,Master 負責管理這些 Worker Node。

(1) Worker Node 工做節點

Worker Node 之後簡稱爲 Node

一個 Node 表示一臺機器,能夠是物理機器,也能夠是虛擬機。

Node 能夠理解爲一個 Server 服務器。

N 個 Pod 跑在一個 Node 上。

一個 Pod 就是一個最小單元,其中的內容絕對不會被分割在2個Node上,一個 Pod 中的內容始終做爲一個總體。

誰告訴 Node 作什麼呢?Master。

(2) Master Node 主節點

Master 有不少種叫法,例如 Master Node, Kubernetes Master, Cluster Control Plane, Control Plane

當看到這些名字時別暈,知道是 Master 就好。

無論叫啥,他的做用就是指揮 Worker Node。

Master 負責作調度決策、響應事件、實現變動、監控集羣。

Node Processes

Master 和 Worker Node 中都有子進程組件。

(1) Master 組件

  • API server:K8s 的 API 接口。
  • etcd:分佈式 key-value 存儲,保存集羣的狀態數據。
  • scheduler:爲新的 Pod 選擇合適的 Node。
  • kube-controller-manager:集羣的控制器,處理集羣的後臺任務。
  • cloud-controller-manager:與雲環境提供商交互的接口。

(2) Worker Node 組件

  • kubelet:負責管理 Node 上的一切事物,與 Master 的 API server 溝通,能夠說是 Worker Node 的大腦。
  • kube-proxy:把鏈接路由到正確的 Pod,負責負載均衡的工做,就像一個交通警察。
  • Container Runtime:下載鏡像、運行容器,例如,Docker 就是一個 Container Runtime,因此爲了方便記憶,咱們能夠把 Container Runtime 理解爲就是 Docker。

Docker Container

若是要與K8s一塊兒運行,則應用程序必須放在某種容器中。

Docker是最多見的容器平臺。咱們假設您正在使用它。

在建立 Deployment 時,你會指定 Pod 應該使用哪一個 Docker 鏡像。

K8s 不會直接建立容器,而是建立包含容器的 Pod。

Pod 中的容器共享一切已經配置好的資源,例如數據卷存儲。

2、K8s 中的 7 個重要對象

這些對象負責管理和運行用於建立和運行容器的 Pod。

ReplicaSet, StatefulSet, DaemonSet

ReplicaSet 建立和管理 Pod。

若是一個 Pod 由於 Node 故障而關閉,ReplicaSet 會自動在其餘 Node 中啓動這個 Pod。

ReplicaSet 由 Deployment 建立,這樣就能夠經過 Deployment 很是方便的升級你的應用。

若是你的應用是有狀態信息的,例如超級瑪麗遊戲,須要保存用戶的狀態:在哪一層、在哪一個位置、有多少金幣 ……

StatefulSet 就是幫助咱們跟蹤應用狀態的。

StatefulSet 狀態集

和 ReplicaSet 同樣,StatefulSet 根據規範管理一組 Pod 的部署和縮放。

StatefulSet 的 Pod 都有一個惟一的、持久的標識,控制器在進行任何從新調度時都會維護該標識。

StatefulSet 對於數據庫等有狀態的持久化後端服務很是有用。

Pod 中的狀態信息就是保存在與 StatefulSet 關聯的數據卷中。

DaemonSet

DaemonSet 用於持續的進程,每當一個 Node 加入到集羣中時,DaemonSet 都會在其中自動啓動一個 Pod。

DaemonSet 適用於一直運行的後臺任務,例如監控、日誌收集。

StatefulSet 和 DaemonSet 雖然與 ReplicaSet 在一個層級中,但他們是不受 Deployment 控制的。

Job

Job 負責監督管理那些運行批處理做業的 Pod。

Job 會建立 Pod,並經過跟蹤 Pod 成功完成的數量來確保他們完成任務。

與 ReplicaSet 不一樣,一旦容器內部的做業成功完成,容器就不會從新啓動。

當你想要一次性的作一個任務的時候,可使用 Job。

CronJob

若是要在指定的時間(例如每小時,天天或每個月)運行做業,請建立 CronJob。

CronJob 與 Job 相似,可是 CronJob 計劃以固定的時間間隔或固定的時間重複執行。

Service 服務

Service 爲一組 Pod 建立單個訪問點。

Service 提供一致的 IP 地址和端口,以訪問其中的 Pod。

外部用戶和內部 Pod 都使用服務與其餘 Pod 通訊。

Volume 數據卷

Volume 是一個能夠保存數據的目錄。

Volume 是一個 Pod 的組件,在 Pod 中建立,不能單獨刪除。

Pod 中的容器均可以訪問 Volume,只要這些容器都掛載了這 Volume 便可。

Volume 的生命週期是獨立於容器的,與 Pod 相關,Pod 掛掉後 Volume 也就消亡了。

翻譯整理自:

https://towardsdatascience.co...

相關文章
相關標籤/搜索