Kubernetes正迅速成為雲計算中部署和管理軟件的新标準。不過,Kubernetes既然能提供極高的價值,也肯定會附帶一個陡峭的學習曲線。作為一個新手,試圖解析官方文檔可能會很困難。這個系統由許多不同的片段組成,并且很難區分哪些與你的用例相關。這篇文章将提供Kubernetes的簡化視圖,但它會對最重要的組件和它們如何組合在一起提供一個高層次的概述。
首先,讓我們看一下硬件是如何表述的:
硬件
節點(Node)
節點是Kubernetes中最小的計算硬件單元。它是集群中單個機器的表示。在大多數生産系統中,節點很可能是數據中心中的物理機器,或者是托管在像谷歌雲平台這樣的雲供應商上的虛拟機。不過,不要讓慣例限制了你的想象力,從理論上講,你可以把任何東西做成一個結點。
雖然使用單個節點是有用的,但它與Kubernetes理念不同。一般來說,你應該将集群看作一個整體,而無需擔心單個節點的狀态。
在Kubernetes中,節點彙聚資源,形成更強大的機器。當你将程序部署到集群中時,它将智能地處理将工作分配給你的各個節點。如果添加或删除了任何節點,集群将根據需要在工作中進行轉換。這對程序或程序員來說都不重要,因為機器實際上是在運行代碼。
如果這種類似“母巢”的系統讓你想起《星際迷航》中的Borg,實話告訴你,你不是一個人,“Borg”是Kubernetes内部谷歌項目的名稱。
持久卷(Persistent Volumes)
因為在集群上運行的程序不能保證在特定的節點上運行,所以無法将數據保存到文件系統中的任意位置。如果一個程序試圖将數據保存到一個文件中,但随後又被轉移到一個新的節點上,那麼該文件将不再是程序期望的位置。由于這個原因,與每個節點相關的傳統本地存儲被當作臨時緩存來保存程序,但本地保存的任何數據都不能持久。
為了永久存儲數據,Kubernetes使用持久卷(Persistent Volumes)。雖然所有節點的CPU和RAM資源都被集群有效地彙集和管理,但持久的文件存儲卻不是。相反,本地或雲驅動器可以作為持久卷附加到集群上。這可以看作是将外部硬盤插入到集群中。持久卷提供了可以挂載到集群的文件系統,而不與任何特定節點相關聯。
軟件
容器(Container)
在Kubernetes上運行的程序被打包成Linux容器。容器是一個被廣泛接受的标準,因此已經有許多預先構建的映像可以部署在Kubernetes上。
容器化允許你創建自足式的Linux執行環境。任何程序和它的所有依賴項都可以打包成一個文件,然後在網絡上共享。任何人都可以下載該容器并在其基礎設施上部署它,所需的設置非常少。創建一個容器可以通過編程方式完成,從而形成強大的CI和CD管道。
可以将多個程序添加到單個容器中,但是如果可能的話,你應該将自己限制為每個容器的一個進程。擁有很多小容器比一個大容器好。如果每個容器都有一個緊密的焦點,那麼更新更容易部署,并且問題更容易診斷。
Pod
與你過去使用的其他系統不同,Kubernetes不直接運行容器;相反,它将一個或多個容器封裝到一個稱為Pod的高級結構中。相同Pod中的任何容器都将共享相同的名稱空間和本地網絡。容器可以很容易地與其他容器在相同的容器中進行通信,就像它們在同一台機器上同時保持一定程度的隔離。
Pod被用作Kubernetes的複制單元。如果你的應用程序太受歡迎,單個的Pod實例無法承載負載,那麼可以配置Kubernetes以在必要時将你的Pod的新副本部署到集群。即使在沒有重載的情況下,在生産系統中任何時候都要有多個副本,以保證負載均衡和故障抵抗。
Pod可以容納多個容器,但在可能的情況下應該限制自己。因為Pod作為一個單位被放大和縮小時,所有在一個Pod裡的容器都必須在一起縮放,不管它們是否需要。這将導緻資源的浪費和成本增加。為了解決這個問題,Pod應該保持盡可能小的大小,通常隻保留一個主進程和緊密耦合的輔助容器(這些輔助容器通常被稱為“側三輪摩托車”)。
部署(Deployment)
雖然Pod是Kubernetes的基本計算單元,但它們通常不是直接在集群上啟動的。相反,Pod通常由一個抽象層來管理:部署。
部署的主要目的是聲明一個Pod應該同時運行多少個副本。當将部署添加到集群中時,它将自動地旋轉加速所需的Pod數量,然後監視它們。如果一個Pod消失,部署将自動重新創建它。
使用部署,你不必手動處理Pod。你隻需聲明系統的期望狀态,它将自動為你管理。
入口(Ingress)
使用上面描述的概念,你可以創建一個節點集群,并将Pod部署到集群上。不過,還有一個問題需要解決:允許外部通信流進入你的應用程序。
默認情況下,Kubernetes提供隔離艙和外部世界。如果你想要與運行在Pod中的服務通信,你必須打開一個通信通道。稱作入口(ingress)。
有多種方法可以将入口添加到集群中。最常見的方法是添加入口控制器或負載均衡器。這兩個選項之間的精确權衡超出了本文的範圍,但是你必須知道,在你可以與Kubernetes進行實驗之前,你需要處理的是入口。
接下來是什麼
以上是對Kubernetes的簡單描述,旨在為你提供開始試驗所需的基礎知識。想必現在你已經了解了組成系統的部分,現在是時候使用它們來部署一個真正的應用程序了。
要在本地使用Kubernetes,可以使用Minikube在你的個人硬件上創建一個虛拟集群。如果你準備嘗試雲服務,谷歌Kubernetes引擎有一系列教程,可幫助你入門。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!