十大必須知道的Kubernetes設計模式 - Bilgin Ibryam

banq發表於2020-05-27

這是從Kubernetes Patterns一書綜合而來的初學者必知的十大設計模式。熟悉這些模式將幫助您理解Kubernetes的基本概念,從而在討論和設計基於Kubernetes的應用程式時為您提供幫助。Kubernetes中有許多重要的概念,但是這些是最重要的概念。
為了幫助您理解,在“四人幫”的設計模式的啟發下,這些模式分為以下幾類。

基礎模式
這些模式代表了容器化應用程式必須遵循的原則和最佳實踐,才能成為良好的雲原生公民。無論應用程式的性質如何,您都應遵循這些準則。遵循這些原則將有助於確保您的應用程式適合Kubernetes上的自動化。
1.健康探針模式

Health Probe要求每個容器都應實現特定的API,以幫助平臺以最健康的方式觀察和管理應用程式。為了完全自動化,雲原生應用程式必須透過允許推斷其狀態來實現高度可觀察性,以便Kubernetes可以檢測到該應用程式是否已啟動並準備服務請求。這些觀察結果影響Pod的生命週期管理以及將流量路由到應用程式的方式。

2.可預測的需求模式

可預測的需求解釋了為什麼每個容器都應宣告其資源配置檔案並保持在指示的資源要求範圍內。在共享雲環境上成功進行應用程式部署,管理和共存的基礎取決於識別和宣告應用程式的資源要求以及執行時依賴項。此模式描述了應如何宣告應用程式需求,無論它們是硬執行時依賴項還是資源需求。宣告您的要求對於Kubernetes在叢集中找到適合您的應用程式的正確位置至關重要。

3.自動放置模式

《自動放置》  介紹瞭如何影響多節點群集中的工作負載分配。放置是Kubernetes排程程式的核心功能,用於將新Pod分配給滿足容器資源請求並遵守排程策略的節點。該模式描述了Kubernetes排程演算法的原理以及從外部影響佈局決策的方式。

結構模式
擁有良好的雲原生容器是第一步,但還不夠。下一步是重複使用容器並將其組合到Pod中以實現所需的結果。此類別中的模式著重於在Pod中構造和組織容器以滿足不同的用例。影響Pod中容器的力會導致這些模式。
1.初始化容器模式

初始化容器為與初始化相關的任務和主應用程式容器引入了單獨的生命週期。初始化容器透過為與初始化相關的任務提供與主應用程式容器不同的單獨生命週期,從而實現關注點分離。這種模式引入了基本的Kubernetes概念,當需要初始化邏輯時,該概念可在許多其他模式中使用。

2.邊車模式

Sidecar邊車模式描述瞭如何在不更改容器的情況下擴充套件和增強其功能。此模式是允許單一用途容器緊密協作的基本容器模式之一。

行為模式
這些模式描述了管理平臺確保的Pod的生命週期保證。根據工作負載的型別,Pod可能會作為批處理作業執行直到完成,或者被安排為定​​期執行。它可能作為守護程式服務或單例執行。選擇正確的生命週期管理原語將幫助您以所需的保證來執行Pod。
1.批處理作業模式

批處理作業描述瞭如何執行隔離的原子工作單元直到完成。此模式適用於管理分散式環境中孤立的原子工作單元。

2.有狀態服務模式

有狀態服務  描述瞭如何使用Kubernetes建立和管理分散式有狀態應用程式。此類應用程式需要諸如永久性身份,網路,儲存和常規性之類的功能。StatefulSet原語為這些構建塊提供了強有力的保證,是有狀態應用程式管理的理想選擇。

3.服務發現模式

服務發現解釋了客戶端如何訪問和發現正在提供應用程式服務的例項。為此,Kubernetes提供了多種機制,具體取決於服務使用者和生產者位於叢集內部還是叢集之外。

高階模式
此類別中的模式更復雜,代表更高階別的應用程式管理模式。這裡的一些模式(例如Controller)是永恆的,而Kubernetes本身就是建立在它們之上的。
1.控制器模式

控制器是一種模式,可以在所需狀態下主動監視和維護一組Kubernetes資源。Kubernetes本身的核心由一組控制器組成,這些控制器定期監視並協調應用程式的當前狀態與宣告的目標狀態。該模式描述瞭如何利用這一核心概念為我們自己的應用程式擴充套件平臺。

2.操作員模式
一個操作員是使用CustomResourceDefinitions封裝操作知識用於在演算法和自動化形式某一具體應用的控制器。Operator模式允許我們擴充套件Controller模式,以獲得更大的靈活性和更高的表現力。Kubernetes 的運營商越來越多,這種模式正在變成操作複雜分散式系統的主要形式。

總結
今天,Kubernetes是最流行的容器編排平臺。它由所有主要軟體公司聯合開發和支援,並且由所有主要雲提供商提供為服務。Kubernetes支援Linux和Windows系統,以及所有主要的程式語言。該平臺還可以協調和自動化無狀態和有狀態應用程式,批處理作業,定期任務和無伺服器工作負載。


 

相關文章