推薦閱讀:數據庫
在本文中,咱們將介紹基本的Kubernetes概念。Kubernetes的術語不少,可能會使人生畏。後端
我將幫助您創建一個思惟模型,以加快對技術的瞭解。服務器
首先,咱們將研究6層抽象及其組成的各個部分。而後,咱們將看看其餘7個關鍵的 K8s API對象。併發
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 子進程。
若是你想建立一直運行的無狀態應用,例如 HTTP server,就須要 Deployment。
Deployment 容許您無縫升級運行中的應用。
Deployment 中指定了 Pod 死掉後重啓的策略。
能夠經過命令行建立 Deployment,也能夠經過配置文件。
Deployment 會建立一個 ReplicaSet,ReplicaSet 會確保你的 APP 具備指定數量的 Pod。
ReplicaSet 根據 Deployment 中設定的指標來建立和擴展 Pod。
Pod 是 K8s 中的基本構建單元。
一個 Pod 中能夠包含多個 Container,但一般是包含一個。
Pod 負責處理容器的數據卷、密鑰、配置。
Pod 的生命週期是不肯定的,可能很是短暫,但 Pod 具備很強的再生能力,在死後能夠自動從新啓動。
當 ReplicaSet 對 APP 進行水平擴展的時候,就會複製 Pod,每一個 Pod 運行相同的容器代碼。
Pod 生存在 Worker Node 上。
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 負責作調度決策、響應事件、實現變動、監控集羣。
Master 和 Worker Node 中都有子進程組件。
(1) Master 組件
(2) Worker Node 組件
若是要與K8s一塊兒運行,則應用程序必須放在某種容器中。
Docker是最多見的容器平臺。咱們假設您正在使用它。
在建立 Deployment 時,你會指定 Pod 應該使用哪一個 Docker 鏡像。
K8s 不會直接建立容器,而是建立包含容器的 Pod。
Pod 中的容器共享一切已經配置好的資源,例如數據卷存儲。
這些對象負責管理和運行用於建立和運行容器的 Pod。
ReplicaSet 建立和管理 Pod。
若是一個 Pod 由於 Node 故障而關閉,ReplicaSet 會自動在其餘 Node 中啓動這個 Pod。
ReplicaSet 由 Deployment 建立,這樣就能夠經過 Deployment 很是方便的升級你的應用。
若是你的應用是有狀態信息的,例如超級瑪麗遊戲,須要保存用戶的狀態:在哪一層、在哪一個位置、有多少金幣 ……
StatefulSet 就是幫助咱們跟蹤應用狀態的。
和 ReplicaSet 同樣,StatefulSet 根據規範管理一組 Pod 的部署和縮放。
StatefulSet 的 Pod 都有一個惟一的、持久的標識,控制器在進行任何從新調度時都會維護該標識。
StatefulSet 對於數據庫等有狀態的持久化後端服務很是有用。
Pod 中的狀態信息就是保存在與 StatefulSet 關聯的數據卷中。
DaemonSet 用於持續的進程,每當一個 Node 加入到集羣中時,DaemonSet 都會在其中自動啓動一個 Pod。
DaemonSet 適用於一直運行的後臺任務,例如監控、日誌收集。
StatefulSet 和 DaemonSet 雖然與 ReplicaSet 在一個層級中,但他們是不受 Deployment 控制的。
Job 負責監督管理那些運行批處理做業的 Pod。
Job 會建立 Pod,並經過跟蹤 Pod 成功完成的數量來確保他們完成任務。
與 ReplicaSet 不一樣,一旦容器內部的做業成功完成,容器就不會從新啓動。
當你想要一次性的作一個任務的時候,可使用 Job。
若是要在指定的時間(例如每小時,天天或每個月)運行做業,請建立 CronJob。
CronJob 與 Job 相似,可是 CronJob 計劃以固定的時間間隔或固定的時間重複執行。
Service 爲一組 Pod 建立單個訪問點。
Service 提供一致的 IP 地址和端口,以訪問其中的 Pod。
外部用戶和內部 Pod 都使用服務與其餘 Pod 通訊。
Volume 是一個能夠保存數據的目錄。
Volume 是一個 Pod 的組件,在 Pod 中建立,不能單獨刪除。
Pod 中的容器均可以訪問 Volume,只要這些容器都掛載了這 Volume 便可。
Volume 的生命週期是獨立於容器的,與 Pod 相關,Pod 掛掉後 Volume 也就消亡了。
翻譯整理自:
https://towardsdatascience.co...