十大必須知道的Kubernetes設計模式 - Bilgin Ibryam
這是從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系統,以及所有主要的程式語言。該平臺還可以協調和自動化無狀態和有狀態應用程式,批處理作業,定期任務和無伺服器工作負載。
相關文章
- 前端工程師必須掌握的設計模式前端工程師設計模式
- 設計師升職加薪必須知道的10個設計網站網站
- PHP程式設計師必須知道的兩種日誌PHP程式設計師
- 前端設計師必須知道的10個重要的CSS技巧前端CSS
- 你必須知道的 SmartSql !SQL
- AppStore 中5個必須知道的基本設定APP
- 邊緣計算你必須知道的100個術語
- 前端必須知道的除錯工具前端除錯
- ?你必須知道的Java泛型Java泛型
- 程式設計師必須知道的字符集與字元編碼詳解程式設計師字元
- 作為程式設計師,這些實用工具你必須要知道!程式設計師
- 人世間必須知道的做人道理
- 你必須要知道的babel二三事Babel
- 關於索引必須知道的知識索引
- 你必須知道的HTTP基本概念HTTP
- 還在複製Jar或War包?還在用Maven拉庫包或框架?基於Kubernetes的運維者與邊車模型將是軟體交付的新模式 〜Bilgin IbryamJARMaven框架運維模型模式
- Java程式設計師必須瞭解的7個效能指標,你都知道嗎?Java程式設計師指標
- .Net Core 你必須知道的source-generators
- Vue開發必須知道的36個技巧Vue
- 函式你必須知道的三種角色?函式
- C#.NET 中你必須知道的反射C#反射
- 敲黑板:InnoDB的Double Write,你必須知道
- 你必須知道的Java基礎知識Java
- 必須知道的JavaScript庫 - 視覺化庫JavaScript視覺化
- is 和 as 讀你必須知道的.net 筆記筆記
- 你必須要知道的HTTP協議原理HTTP協議
- 面試前必須知道的MySQL命令【explain】面試MySqlAI
- 學習Kali Linux必須知道的幾點Linux
- 寫chrome外掛前必須要知道的Chrome
- 3款你必須知道的爬蟲工具爬蟲
- 程式設計師必須知道機器學習與資料探勘十大經典演算法:PageRank演算法篇程式設計師機器學習演算法
- 設計模式 | Spring中用到的設計模式,你知道幾個?設計模式Spring
- shell程式設計必須要掌握的命令-xargs程式設計
- 程式設計師必須要了解的web安全程式設計師Web
- 想入門web前端開發,並且學好,你必須知道的十大開發工具!Web前端
- 每個Java程式設計師都必須知道的四種負載均衡演算法Java程式設計師負載演算法
- 優秀程式設計師必須知道的32個演算法,提高你的開發效率程式設計師演算法
- using 你知道多少?你必須知道的.NET讀書筆記筆記