您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Kubernetes資源類型的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Kubernetes是一個開源的容器管理平臺,用于部署和管理容器化的工作負載。在生產環境中運行容器時,您將擁有幾十個、甚至數千個容器。
這些容器需要部署、管理和連接,這很難手動完成。這就是Kubernetes的作用。可以把它想象成一個容器調度程序。
Kubernetes被設計成與Docker一起工作,Docker是一個容器化平臺,它將應用程序和所有依賴項打包成一個容器。
舉例:Docker用于隔離、打包和以容器的形式運輸應用程序。Kubernetes是用于部署和擴展應用程序的容器調度器。
關于Kubernetes,我們可以:
在不停機的情況下部署服務和推出新版本
在私有或公共云上運行
在最合適的服務器上放置和縮放服務的副本
驗證服務的運行狀況
有狀態應用程序的掛載卷
現在我們已經復習了Kubernetes,讓我們跳到它的一些資源并討論何時使用它們。從pods開始。
Pods是什么?
pod是Kubernetes中應用程序的最低或更原子的單元。需要注意的是,在Docker世界中,pod并不等于容器。一個pod可以由多個容器組成。如果您有純Docker背景,這可能很難理解。
可以將其看作Kubernetes抽象,它表示一組容器和它們的共享資源。例如,Pod可以包括一個帶有Node.js應用程序的容器和另一個向web服務器提供數據的容器。
pod是表示集群中正在運行的進程的一種方法。
如果一個pod可以有多個容器,它是如何工作的?我們需要注意一些限制。pod有以下內容:
單一IP地址
共享主機
共享的IPC空間
共享網絡端口范圍
共享卷
pod中的容器通過本地主機相互通信,而pod-to-pod的通信是通過服務完成的。從圖中可以看到,pod中的容器共享一個IP地址。
pod是部署應用程序的好方法,但是pod資源類型有一些限制。pod是單個實體,如果它失敗了,它就不能重新啟動自己。這并不適合大多數用例,因為我們希望應用程序具有高可用性。
但是Kubernetes已經解決了這個問題,我們將在文章中進一步研究如何處理高可用性。
在Kubernetes中,pod總是在節點上運行。可以將節點看作由主服務器管理的工作機器。一個節點可以有多個pods,主節點會自動在一個節點上安排這些pods。
Pods原理
Pods被設計成一個運行多個進程的內聚單元。這些進程被包裝在容器中。組成pod的所有容器都運行在同一臺機器上,不能跨多個節點拆分。
Pod中的所有進程(或容器)共享相同的資源(例如存儲),它們可以通過本地主機彼此通信。卷就像具有可共享數據的目錄。所有容器都可以訪問它們并共享相同的數據。
Replication controller
我們剛剛得知pods是會死的。如果他們死了,那就是他們的結局。但是,如果您希望運行同一版本的三個pod以獲得高可用性,該怎么辦呢?那就是replication controller的作用了。
replication controller的主要職責是防止失敗。它位于pod資源類型之上并對其進行控制。
這個功能處理了pods的這個問題。但是,需要注意的是,replication controller并不處理與pods相關的所有內容,即生命周期。
假設我們想在不停機的情況下升級pod。replication controller將不負責此操作。
現在我們已經了解了pods,讓我們進入下一個Kubernetes資源: services。
什么是Services?
如果我們想要連接到pods,就需要創建一個Service。在Kubernetes中,Service是一組pods上的網絡抽象。可以將其看作在集群上運行的一組pods。Kubernetes服務通常用于支持微服務體系結構。
Kubernetes為一組pods提供了它們自己的IP地址和單個DNS名稱,并可以在它們之間實現負載平衡。它們提供了標準化集群的特性,例如:
負載平衡
零宕機的部署
應用程序之間的服務發現
它允許在出現故障時,對流量進行負載平衡。一項服務允許Kubernetes為pods設置單一的DNS記錄。如前所述,每個pod都有一個單獨的IP地址。對于服務資源類型,你通常會像下面的例子一樣定義一個選擇器:
除此之外,kube-proxy還在集群中創建一個虛擬IP來訪問服務。然后,這個虛擬IP路由到pod IP。如果pod ip更改或部署了新的pods,service資源類型將跟蹤更改,并代表您更新內部路由。
deployments是什么?
現在是拼圖的最后一部分:deployments。deployments資源類型位于一個副本集(ReplicaSet)之上,可以對其進行操作。換句話說,deployments為pods副本集提供更新。
為此,您需要在deployments中描述所需的狀態,然后部署控制器將以可控的速度更改為所需的狀態。這允許您運行無狀態應用程序。如果需要進行升級,則需要替換副本集。此操作將導致應用程序停機。
Kubernetes的主要優點之一是高可用性。deployment使我們能夠在不停機的情況下進行升級。與在復制集中所做的一樣,指定要運行的pods數量。
一旦觸發更新,deployment將對pods執行滾動升級,同時確保每個pod的升級成功,然后再轉移到下一個。
讓我們看一個deployment示例,看看它們是如何創建的。
后一個命令的輸出如下所示。
那么,如果我們推出了一個新版本的應用程序,但出現了錯誤,會發生什么情況呢?deployment也有解決方法,我們可以很容易地回滾部署。
這里有一個警告:如果您正在使用pvc(持久卷聲明)并在聲明中寫入了一些內容。這是不會逆轉的。
Deployment控制ReplicaSet,而ReplicaSet控制Pods。因此,在使用Deployment資源類型時,您仍然需要一個Service來訪問它。
感謝各位的閱讀!關于“Kubernetes資源類型的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。