k8s设计-多容器pod设计模式
對于Kubernetes中的特定目的,多容器Pod非常有用。雖然并非總是需要將多個容器組合到單個Pod中,但是了解采用的正確模式會創建更強大的Kubernetes部署。
什么時候應該將多個容器合并到一個Pod中?
當容器具有完全相同的生命周期,或者容器必須在同一節點上運行時。最常見的情況是,您需要在一個與主容器相同的節點上定位和管理一個助手進程。
將容器組合到單個容器中的另一個原因是容器中容器之間的通信更加簡單。這些容器可以通過共享卷(寫入共享文件或目錄)和進程間通信(信號或共享內存)進行通信。
有三種常見的設計模式和用例,用于將多個容器組合到一個容器中。我們將逐步介紹邊車模式,適配器模式和大使模式。
?
邊車模式
邊車模式由一個主應用程序(即Web應用程序)以及一個輔助容器組成,該容器對您的應用程序是必不可少的,但不一定是應用程序本身的一部分。
最常見的Sidecar容器是日志記錄實用程序,同步服務,觀察程序和監視代理。在應用程序本身不運行時運行日志記錄容器是沒有意義的,因此我們創建了一個包含主應用程序和sidecar容器的pod。進行日志記錄工作的另一個好處是,如果日志記錄代碼有錯誤,則錯誤將被隔離到該容器中-非必需的日志記錄代碼中引發的異常不會導致主應用程序崩潰。
適配器模式
適配器模式用于標準化和規范化應用程序輸出或監視數據以進行聚合。
作為一個簡單的示例,我們有一個跟蹤響應時間的集群級監視代理。假設我們的集群中有一個Ruby應用程序,它以格式寫入請求計時[DATE] - [HOST] - [DURATION],而另一個Node.js應用程序以寫入相同的信息[HOST] - [START_DATE] - [END_DATE]。
監視代理只能接受格式為的輸出[RUBY|NODE] - [HOST] - [DATE] - [DURATION]。我們可以強制應用程序以所需的格式編寫輸出,但這會給應用程序開發人員帶來負擔,并且取決于此格式,可能還有其他事情。更好的替代方法是提供將輸出調整為所需格式的適配器容器。然后,應用程序開發人員可以簡單地更新pod定義以添加適配器容器,并且他們可以免費獲得此監視。
大使模式
大使模式是將容器與外界連接的一種有用方法。大使容器本質上是一種代理,它允許其他容器連接到本地主機上的端口,而大使容器則可以根據群集的需要將這些連接代理到不同的環境。
大使模式的最佳用例之一是提供對數據庫的訪問。在本地進行開發時,您可能希望使用本地數據庫,而測試和生產部署又需要不同的數據庫。
管理連接到哪個數據庫可以通過環境變量來完成,但這將意味著您的應用程序根據環境更改連接URL。更好的解決方案是使應用程序始終連接到localhost,并將映射到正確數據庫的連接的責任落在大使容器上。或者,大使可以將請求發送到數據庫的不同分片-應用程序本身無需擔心。
總結
以上是生活随笔為你收集整理的k8s设计-多容器pod设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设计容器类
- 下一篇: 201912月全国计算机二级考试,201