來自:杜亦舒 性能與架構
Kubernetes 迅速成為雲環境中軟件部署和管理的新標準。
與強大的功能相對應的是陡峭的學習曲線。
本文將提供 Kubernetes 的簡化視圖,從高處觀察其中的重要組件,以及他們的關聯。
硬件
(1)Node 節點
Node(節點)是計算資源的最小單位,表示集群中單臺計算機。
可能是數據中心裡面的計算機,也可能是雲中的虛擬機,還可能是其他的東西。
Node 就是一個抽象層,我們不必關注某臺機器的特性,只需要簡單的視為我們可以利用的 CPU 和 RAM 資源。
(2)Cluster 集群
把多個 Node 集中到一起,形成功能強大的機器。
把應用部署到 Cluster 中時,可以智能為你分配具體的工作節點。
如果集群中的節點發生變化,例如添加或者刪除,Cluster 會自動重新分配工作,我們無需關心代碼是在哪個節點上運行。
(3)Persistent Volumes 持久型數據卷
應用不是運行在特定的節點上的,隨時可能轉移到其他節點上,所以,應用不能把數據保存到所在節點的文件系統中。
為了永久存儲數據,kubernetes 提供了 Persistent Volumes,就像一個插件一樣,掛載到集群中,不與特定的節點綁定。
2. 軟件
(1)Container 容器
Kubernetes 上運行的程序被打包為 Linux 容器。
容器化使您可以創建獨立的 Linux 執行環境。任何程序及其所有依賴項,都可以捆綁成一個文件,然後在網上共享。
任何人都可以下載容器,通過很少的配置即可運行。
容器的操作可以通過編程完成,從而形成功能強大的 CI/CD 管道。
可以將多個程序添加到一個容器中,但最好還是一個程序一個容器,這樣易於部署、查找問題。
(2)Pod
Kubernetes 不會直接運行容器,而是將一個或多個容器包裝到稱為 pod 的更高級別的結構中。
同一個 Pod 中的容器共享資源和網絡,可以自由的相互溝通。
Pod 是 Kubernetes 中的複製單位,當你的應用需要擴展時,可以複製新的 Pod,部署到集群中。
通常都會運行多個 Pod 副本,以實現負載均衡和故障容錯。
(3)Deployment 部署
儘管 Pod 是 Kubernetes 中計算的基本單位,但不會直接在集群上啟動它們,而是通過一個抽象層(Deployment)進行管理。
Deployment 的主要目的是聲明一次應該運行多少個 Pod 副本。
當一個 Deployment 添加到集群中以後,它就會自動啟動所需數量的 Pod,並對其監控,如果某個 Pod 掛了,Deployment 會自動重新創建一個新的。
使用 Deployment,你就不用手動處理 Pod 了,你只需要說明系統應該是什麼樣的,Deployment 就會自動幫你管理。
(4)Ingress 入口
通過上述的概念,已經可以創建一個包含多個 Node 的 Cluster,通過 Deployment 啟動並管理多個 Pod(Pod 中是 Container,Container 裡是你的 App)。
現在的問題是:外部如何訪問你的應用呢?
默認情況下,Pod 和外界之間是隔離的。如果要與 Pod 中運行的服務進行通信,則必須打開一個通信通道,就是 Ingress(入口)。
小結
本文翻譯整理自:
https://medium.com/google-cloud/kubernetes-101-pods-nodes-containers-and-clusters-c1509e409e160
閱讀更多 IT實戰聯盟 的文章