Kubernetes 容器設計模式概述

雲原生應用運行於多種複雜的分佈式環境,一些獨特的容器設計模式可以起幫助適應環境。本文就介紹了幾種最常見的容器設計模式,希望對大家有所幫助。

Kubernetes 是一個開源容器編排引擎,用於自動化容器化應用程序的部署、擴展和管理。Pod 是 kubernetes 應用程序的基本構建模塊。Kubernetes 管理着 Pod,Pod 封裝着容器。一個 Pod 可能包含一個或多個容器、存儲、IP 地址,並控制着容器運行。

包含一個容器的 Pod 稱爲單容器 Pod,這是最常見的 kubernetes 用例。包含多個相互關聯容器的 Pod 指多容器 Pod。Pod 運行於不同的複雜環境,一些獨特的容器設計模式可以幫助適應環境,本文就介紹了幾種常見的容器設計模式。

Init(初始化)容器

Init 容器是在容器中啓動主容器之前應運行並完成的容器。它爲初始化提供了單獨的生命週期,因此可以分離應用程序中的關注點。例如,當我們需要安裝一些特定的軟件後才能運行應用程序時,可以在 Pod 的 Init 容器中進行該安裝。

我們可以爲 Init 容器定義 n 個容器,並且只有在成功終止所有 Init 容器之後,主容器纔會啓動。所有 Init 容器將被順序執行,如果 Init 容器中有錯誤,Pod 將重新啓動,所有 Init 容器也將再次執行,因此最好將 Init 容器設計得簡單、快速。

在某些情況下,我們可以使用此模式:

  • 在應用程序或主容器需要一些先決條件(例如在啓動之前安裝一些軟件、數據庫設置、文件系統的權限)。

  • 希望延遲主容器啓動。

Sidecar(邊車)容器

Sidecar 容器是與 Pod 中的主容器一起運行的容器。Sidecar 模式可以在不更改的情況下擴展並增強當前容器的功能。

當帶有單容器 Pod 正常運行時,我們想在不接觸、不更改的情況下向當前容器添加或擴展一些功能,這種情況下,Sidecar 容器模式可以提供幫助。

我們可以爲 Sidecar 容器定義任意數量的容器,並且能與主容器協同工作。所有容器並行執行,並且僅當兩種類型的容器都成功運行時,整個功能才起作用。在大多數情況下,Sidecar 容器既簡單又小巧,比主容器消耗更少的資源。

在某些情況下,我們可以使用此模式:

  • 希望擴展或增強現有單個容器 Pod 的功能但不想更改現有容器 Pod 功能。

  • 想將主容器代碼與 Git 服務器請求同步。

  • 將日誌事件發送到外部服務器。

  • 用於與網絡相關的任務時。

Adapter(適配器)容器

本質上,很多應用程序是異構的,這意味着它們沒有相同的接口,或者與其他系統是不一致的。

想象一下,一個容器 Pod 正在運行,但是它與其他系統沒有相同的接口,因爲無法集成或使用它。如何使該容器具有標準化格式的統一接口,以便其他系統可以連接到容器?Adapter 容器模式可以在這種情況下起到作用。

我們可以爲 Adapter 容器定義任意數量的容器,並且主容器可以與其一起使用。

Ambassador(外交官)容器

Ambassador 容器是一種特殊的 Sidecar 容器,可以簡化 Pod 外部服務。在 kubernetes 上運行應用程序時,可能會有外部服務訪問數據。Ambassador 容器隱藏了複雜性,並提供了統一的接口來訪問這些外部服務。

當我們需要訪問外部服務時,外部服務可能會是動態的、會返回不同的格式,或者由於其他一些原因,我們不想在主容器中處理這種複雜性,Ambassador 容器就能處理此類情況。

在某些情況下,我們可以使用此模式:

  • 希望隱藏主容器的複雜性,例如服務發現(service discovery)。

  • 當容器化服務想要與外部服務對話時,我們可以使用此模式來處理這些服務的請求和響應。

  • 每當需要轉換或標準化外部服務響應的格式時。

文章來源:K8sMeetup社區,點擊查看原文

Kubernetes管理員認證(CKA)培訓

本次CKA培訓在上海開班,基於最新考綱,通過線下授課、考題解讀、模擬演練等方式,幫助學員快速掌握Kubernetes的理論知識和專業技能,並針對考試做特別強化訓練,讓學員能從容面對CKA認證考試,使學員既能掌握Kubernetes相關知識,又能通過CKA認證考試,學員可多次參加培訓,直到通過認證。點擊下方圖片或者閱讀原文鏈接查看詳情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章