您好,登錄后才能下訂單哦!
本篇文章為大家展示了Kubernetes是如何工作的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
過去幾年來,運行容器化應用程序的流行度呈爆炸式增長,這已經不是什么秘密了。能夠通過代碼提供應用程序的依賴項來迭代和發布應用程序是一個巨大的勝利。Gartner表示,到2022年,“超過75%的全球組織將在生產中運行容器化應用程序”。
對于大規模運行的組織來說,一個Linux容器實例不足以滿足其應用程序的所有需求。對于足夠復雜的應用程序,例如通過微服務進行通信的應用程序,需要多個相互通信的Linux容器并不少見。該體系結構引入了一個新的擴展問題:如何管理所有這些單獨的容器?開發者仍然需要安排容器在特定機器上的部署,管理它們之間的網絡,增加在高負載下分配的資源等等。
來到Kubernetes,一個容器編排系統 - 一種管理容器化應用程序生命周期的方法。它是一種元過程,允許同時自動部署和擴展多個容器。運行相同應用程序的幾個容器被分組在一起。這些容器充當副本(replica),并用于負載平衡傳入的請求。然后,容器編排器監督這些組,確保它們正確地運行。
容器編排器本質上是負責操作一組容器化應用程序的管理員。如果需要重新啟動容器或獲取更多資源,則由編排器為你處理。
這是對大多數容器編排器工作原理的一個相當廣泛的概述。讓我們更深入地研究一下Kubernetes的所有組成部分。
Kubernetes術語和架構
Kubernetes引入了許多詞匯來描述應用程序的組織方式。我們將從最小的一層開始。
Pod
Kubernetes pod是一組容器,是Kubernetes管理的最小單元。Pod有一個單獨的IP地址,應用于pod中的每個容器。Pod中的容器共享相同的資源,比如內存和存儲。這允許將pod內的單個Linux容器作為單個應用程序一起處理,就好像在更傳統的工作負載中,所有容器化的進程都在同一主機上運行一樣。當應用程序或服務是需要運行的單個進程時,只有一個容器的pod是很常見的。但是,當事情變得更加復雜,并且多個進程需要使用相同的共享數據卷共同工作以實現正確的操作時,與單獨在容器之間設置共享資源相比,多容器pod簡化了部署配置。
例如,如果你正在處理創建gif的圖像處理服務,一個pod可能有多個容器一起工作來調整圖像的大小。主容器可能運行接收請求的非阻塞微服務應用程序,然后運行一個或多個輔助(側車)容器,運行批處理后臺進程或清理存儲卷中的數據構件,作為管理整體應用程序性能的一部分。
Deployment
Kubernetes deployment(部署)允許你設置希望如何在Kubernetes節點上復制pod的詳細信息,從而定義希望運行應用程序的規模。Deployment描述所需運行的相同pod副本的數量,以及更新部署時使用的首選更新策略。Kubernetes將跟蹤pod的健康狀況,并根據需要刪除或添加pod,使應用程序部署達到所需的狀態。
Service
單個pod的壽命不能被依賴;從它們的IP地址到它們的存在,一切都有可能發生變化。事實上,在DevOps社區中,有一個概念是將服務器視為“寵物”(pets)或“牛”(cattle)。寵物是你需要特別照顧的東西,而牛則被認為是更值得犧牲的東西。同樣,Kubernetes也沒有將它的pods視為惟一的長時間運行的實例;如果pod遇到問題而死亡,Kubernetes的工作就是替換它,這樣應用程序就不會經歷任何停機時間。
Service是對pods的抽象,本質上是各種應用程序使用者交互的惟一接口。當pod被替換時,它們的內部名稱和IP可能會發生變化。Service將單個機器名稱或IP地址映射到其基礎名稱和編號可以是不可靠的pod。Service確保在外部網絡中,一切看起來都是不變的。
Node
Kubernetes node(節點)管理和運行pod;是執行給定工作的機器(無論是虛擬的還是物理的)。就像pod收集一起操作的單個容器一樣,node收集一起工作的整個pod。當你進行大規模操作時,你希望能夠將工作移交給一個node,該node的pod可以接收工作。
Master server
這是管理員和用戶管理各種節點的主要入口。操作通過HTTP調用,或連接到機器并運行命令行腳本發送給它。
Cluster
Cluster(集群)是將上述所有組件作為一個單元組合在一起。
Kubernetes組件
對于Kubernetes是如何組裝的有了一個大致的概念,現在就來看看確保一切順利運行的各種軟件組件。主服務器和單個工作節點都有三個主要組件。
Master server組件
API Server
API服務器向Kubernetes集群暴露一個REST接口。所有針對pod、service等的操作都是通過與它提供的端點通信以編程方式執行的。
Scheduler
調度程序負責將工作分配給各個節點。它監視資源容量,并確保工作節點(Worker node)的性能處于適當的閾值之內。
Controller-manager
controller-manager負責確保集群的共享狀態按預期運行。更準確地說,控制器管理器監視響應事件的各種控制器(例如,如果節點發生故障)。
Worker node組件
Kubelet
Kubelet跟蹤pod的狀態,以確保所有容器都在運行。它每隔幾秒鐘向主服務器(Master server)提供一條心跳消息。如果復制控制器(replication controller)沒有接收到該消息,則節點被標記為不健康。
Kube proxy
Kube代理發送從服務進入節點的流量。它將工作請求轉發到正確的容器。
etcd
etcd是一個分布式鍵值存儲,Kubernetes使用它來共享關于集群總體狀態的信息。此外,節點可以引用存儲在那里的全局配置數據,以便在重新生成它們時設置它們自己。
上述內容就是Kubernetes是如何工作的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。