本文已超過一年。較舊的文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
容器化應用程式設計原則
現在幾乎可以將任何應用程式放入容器中並執行。然而,建立雲原生應用程式(透過 Kubernetes 等雲原生平台有效自動化和協調的容器化應用程式)需要額外的努力。雲原生應用程式預期會發生故障;即使基礎架構發生中斷,它們也能可靠地執行和擴展。為了提供此類功能,Kubernetes 等雲原生平台對應用程式施加了一組合約和限制。這些合約確保它們執行的應用程式符合某些限制,並允許平台自動化應用程式管理。
我概述了七項原則,供容器化應用程式遵循,以實現完全雲原生。
| ----- | | | | 容器設計原則 |
這七項原則涵蓋建置時和執行時的考量。
建置時
- 單一關注點: 每個容器都處理單一關注點,並能妥善處理。
- 自我包含: 容器僅依賴 Linux 核心的存在。其他程式庫在建置容器時新增。
- 映像檔不可變性: 容器化應用程式應為不可變的,並且一旦建置完成,預期在不同環境之間不會變更。
執行時
- 高度可觀察性: 每個容器都必須實作所有必要的 API,以協助平台以最佳方式觀察和管理應用程式。
- 生命週期一致性: 容器必須有一種方法來讀取來自平台的事件,並透過回應這些事件來遵守。
- 程序可拋棄性: 容器化應用程式必須盡可能短暫存在,並隨時準備好被另一個容器實例取代。
- 執行時限制: 每個容器都必須宣告其資源需求,並將資源使用限制在指示的需求範圍內。建置時原則確保容器具有適當的粒度、一致性和結構。執行時原則規定了為了使容器化應用程式具備雲原生功能而必須實作哪些功能。遵守這些原則有助於確保您的應用程式適用於 Kubernetes 中的自動化。
白皮書可免費下載
若要深入了解為 Kubernetes 設計雲原生應用程式,請查看我的 Kubernetes 模式 書籍。
Twitter:
部落格:http://www.ofbizian.com
Linkedin
Bilgin Ibryam (@bibryam) 是 Red Hat 的首席架構師、ASF 的開源貢獻者、部落格作者、作家和演講者。他是《Camel Design Patterns》和《Kubernetes Patterns》的作者。在他的日常工作中,Bilgin 樂於指導、培訓和領導團隊,使其在分散式系統、微服務、容器和一般雲原生應用程式方面取得成功。