十大必須知道的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系統,以及所有主要的程式語言。該平臺還可以協調和自動化無狀態和有狀態應用程式,批處理作業,定期任務和無伺服器工作負載。
相關文章
- 程式設計師必須克服的十大程式設計禁忌程式設計師
- 有理想的程式設計師必須知道的15件事程式設計師
- 前端工程師必須掌握的設計模式前端工程師設計模式
- 設計師升職加薪必須知道的10個設計網站網站
- PHP程式設計師必須知道的兩種日誌PHP程式設計師
- iOS程式設計師必須知道的Android要點iOS程式設計師Android
- 網頁設計師必須知道的6個小技巧網頁
- 前端設計師必須知道的10個重要的CSS技巧前端CSS
- 你必須知道的 SmartSql !SQL
- 程式設計師必須知道的幾個國外IT網站程式設計師網站
- 作為程式設計師必須知道的程式語言編年史程式設計師
- ?你必須知道的Java泛型Java泛型
- 前端必須知道的除錯工具前端除錯
- 要想深入理解設計模式,就必須究其細節設計模式
- 程式設計師必須知道的字符集與字元編碼詳解程式設計師字元
- 程式設計師必須知道的幾個Git程式碼託管平臺程式設計師Git
- Web開發者和設計師必須要知道的 iOS 8 十個變化WebiOS
- [轉載]程式設計初學者必須知道的十件事程式設計
- 程式設計師必須知道機器學習與資料探勘十大經典演算法:PageRank演算法篇程式設計師機器學習演算法
- AppStore 中5個必須知道的基本設定APP
- 邊緣計算你必須知道的100個術語
- 你必須知道的HTTP基本概念HTTP
- 面試前必須知道的MySQL命令【explain】面試MySqlAI
- 關於索引必須知道的知識索引
- 你必須要知道的babel二三事Babel
- JavaScript 面試必須知道的 10 個概念JavaScript面試
- 你必須知道的cookie攻防技術!!!Cookie
- 15個必須知道的chrome開發者技巧Chrome
- 作為程式設計師,這些實用工具你必須要知道!程式設計師
- 每個Java程式設計師必須知道的5個JVM命令列標誌Java程式設計師JVM命令列
- C#.NET 中你必須知道的反射C#反射
- 函式你必須知道的三種角色?函式
- 寫chrome外掛前必須要知道的Chrome
- is 和 as 讀你必須知道的.net 筆記筆記
- 大學期間必須知道的JVM知識JVM
- 面試前必須要知道的Redis面試題Redis面試題
- 你必須要知道的HTTP協議原理HTTP協議
- 敲黑板:InnoDB的Double Write,你必須知道