容器的網路概念
容器是在共用作業系統 (OS) 核心上執行之軟體的隔離單位。 容器會封裝應用程式及其相依性,並將其從執行所在的主機作業系統抽象化。 結果是輕量型執行階段環境,應用程式可在開發期間於該環境中執行並且輕鬆地共用。
容器會與主機作業系統和其他容器隔離。 連結至虛擬交換器的虛擬網路介面卡可讓容器彼此通訊,以及與外部網路通訊。
容器執行階段:Docker
在本課程模組中,我們會檢查 Windows 上 Docker 容器的網路選項。 Docker 是開放原始碼工具、解決方案和雲端式服務的集合,可提供將應用程式程式碼封裝或容器化為標準化單位 (稱為 Docker 容器) 的通用模型。 Docker 容器提供安全性功能,以在相同主機上同時執行多個容器,而不會彼此影響。
使用虛擬交換器的容器隔離
不同類型的虛擬交換器可為容器提供不同層級的隔離和效能。 內部虛擬交換器不會直接連線到容器主機上的實體 NIC,只會直接連線外部虛擬交換器。
最常見的三種虛擬交換器類型包括 NAT、透明和重疊。
- 具有 NAT 虛擬交換器的容器會使用網路位址轉譯 (NAT) 來存取外部網路。 NAT 虛擬交換器很容易設定,但是會限制容器的可攜性和可擴縮性。
- 透明虛擬交換器可讓您的容器直接連線到實體網路。 此虛擬交換器提供高效能和彈性,但您必須手動設定 IP 位址和路由規則。
- 重疊虛擬交換器會在實體網路頂端建立虛擬網路層。 您可以取得容器的跨主機通訊和網路分割,但是會增加額外負荷和複雜度。
容器管理
通常容器會視為 VM,但您必須記住它們不是。 容器有不同的生命週期。 容器會依要求進行部署、啟動、停止及終結。 此生命週期讓容器可處置,且會影響開發人員與 IT 作業規劃管理大型容器部署的方式。
容器網路介面 (CNI) 外掛程式
若要管理容器 IP 位址和虛擬網路介面卡的配置和組態,您必須使用容器網路介面 (CNI) 外掛程式。 CNI 外掛程式是實作 CNI 規格的軟體元件,可定義協調器的標準方式,例如 Kubernetes 與 Azure 之類的網路提供者互動。
有不同的 CNI 外掛程式適用於 Windows 容器,例如:
- WinNAT CNI 外掛程式會針對容器網路使用 NAT 虛擬交換器。 WinNAT 是 Windows 上 Docker 的預設 CNI 外掛程式。
- WinCNI CNI 外掛程式會針對容器網路使用透明虛擬交換器。 WinCNI 與 Kubernetes 相容,但需要手動 IP 位址管理。
- Azure CNI 外掛程式會針對容器網路使用重疊虛擬交換器。 Azure CNI 與 Azure 虛擬網絡整合,並提供網路原則、服務探索和負載平衡等進階功能。
容器與微服務
微服務應用程式是雲端原生架構方法,其中單一應用程式是由許多鬆散耦合且可獨立部署的元件或服務所組成。 每個元件或服務都可以由容器表示。
容器不一定會實作微服務結構。 他們可以裝載整合型應用程式,但並非針對該目的所設計。 根據預設,容器執行階段 (例如 Docker) 以及容器協調器會假設一律可以安全地刪除或移除容器,並可視需要直接用另一個容器取代。
容器、Kubernetes 和網路
部署、更新、監視及移除容器的程序會帶來許多挑戰。 在本課程模組中,我們會檢查容器管理解決方案,以使用 Kubernetes 和 Azure Kubernetes Service (AKS) 建立 Windows 容器的網路。 這些選項支援針對容器網路使用 CNI 外掛程式。