01.16 「輕閱讀」輕鬆理解 Kubernetes 的核心概念

來自:杜亦舒 性能與架構

Kubernetes 迅速成為雲環境中軟件部署和管理的新標準。

與強大的功能相對應的是陡峭的學習曲線。

本文將提供 Kubernetes 的簡化視圖,從高處觀察其中的重要組件,以及他們的關聯。

硬件

(1)Node 節點

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

Node(節點)是計算資源的最小單位,表示集群中單臺計算機。

可能是數據中心裡面的計算機,也可能是雲中的虛擬機,還可能是其他的東西。

Node 就是一個抽象層,我們不必關注某臺機器的特性,只需要簡單的視為我們可以利用的 CPU 和 RAM 資源。

(2)Cluster 集群

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

把多個 Node 集中到一起,形成功能強大的機器。

把應用部署到 Cluster 中時,可以智能為你分配具體的工作節點。

如果集群中的節點發生變化,例如添加或者刪除,Cluster 會自動重新分配工作,我們無需關心代碼是在哪個節點上運行。

(3)Persistent Volumes 持久型數據卷

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

應用不是運行在特定的節點上的,隨時可能轉移到其他節點上,所以,應用不能把數據保存到所在節點的文件系統中。

為了永久存儲數據,kubernetes 提供了 Persistent Volumes,就像一個插件一樣,掛載到集群中,不與特定的節點綁定。

2. 軟件

(1)Container 容器

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

Kubernetes 上運行的程序被打包為 Linux 容器。

容器化使您可以創建獨立的 Linux 執行環境。任何程序及其所有依賴項,都可以捆綁成一個文件,然後在網上共享。

任何人都可以下載容器,通過很少的配置即可運行。

容器的操作可以通過編程完成,從而形成功能強大的 CI/CD 管道。

可以將多個程序添加到一個容器中,但最好還是一個程序一個容器,這樣易於部署、查找問題。

(2)Pod

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

Kubernetes 不會直接運行容器,而是將一個或多個容器包裝到稱為 pod 的更高級別的結構中。

同一個 Pod 中的容器共享資源和網絡,可以自由的相互溝通。

Pod 是 Kubernetes 中的複製單位,當你的應用需要擴展時,可以複製新的 Pod,部署到集群中。

通常都會運行多個 Pod 副本,以實現負載均衡和故障容錯。

(3)Deployment 部署

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

儘管 Pod 是 Kubernetes 中計算的基本單位,但不會直接在集群上啟動它們,而是通過一個抽象層(Deployment)進行管理。

Deployment 的主要目的是聲明一次應該運行多少個 Pod 副本。

當一個 Deployment 添加到集群中以後,它就會自動啟動所需數量的 Pod,並對其監控,如果某個 Pod 掛了,Deployment 會自動重新創建一個新的。

使用 Deployment,你就不用手動處理 Pod 了,你只需要說明系統應該是什麼樣的,Deployment 就會自動幫你管理。

(4)Ingress 入口

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

通過上述的概念,已經可以創建一個包含多個 Node 的 Cluster,通過 Deployment 啟動並管理多個 Pod(Pod 中是 Container,Container 裡是你的 App)。

現在的問題是:外部如何訪問你的應用呢?

默認情況下,Pod 和外界之間是隔離的。如果要與 Pod 中運行的服務進行通信,則必須打開一個通信通道,就是 Ingress(入口)。

小結

「輕閱讀」輕鬆理解 Kubernetes 的核心概念

本文翻譯整理自:

https://medium.com/google-cloud/kubernetes-101-pods-nodes-containers-and-clusters-c1509e409e160


分享到:


相關文章: