本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes v1.9 發布 Windows Server Container 的 Beta 支援

在發布時,Michael Michael 以 SIG-Windows 負責人身分撰寫文章。

隨著 Kubernetes v1.9 的發布,我們確保 Kubernetes 在任何地方都能良好運作,並為所有人服務的使命向前邁進了一大步。我們已將 Windows Server 的支援推進到 beta 版,同時在 Kubernetes 和 Windows 平台上持續進行功能和功能改進。SIG-Windows 自 2016 年 3 月以來一直致力於為許多 Windows 特定的應用程式和工作負載在 Kubernetes 上運行打開大門,顯著擴展了 Kubernetes 的實作場景和企業影響力。

各種規模的企業都在 .NET 和基於 Windows 的應用程式上進行了大量投資。如今,許多企業產品組合都包含 .NET 和 Windows,Gartner 聲稱 80% 的企業應用程式在 Windows 上運行。根據 StackOverflow Insights,40% 的專業開發人員使用 .NET 程式語言 (包括 .NET Core)。

但為何所有這些資訊都很重要?這意味著企業既有傳統應用程式,也有新生於雲端 (微服務) 的應用程式,這些應用程式使用各種程式設計框架。業界正在大力推動將現有/傳統應用程式現代化為容器,使用類似於「直接轉移」的方法。將現有應用程式現代化為容器也為在新 Windows 或 Linux 容器中引入額外功能提供了更大的彈性。容器正成為封裝、部署和管理現有應用程式和微服務應用程式的事實標準。IT 組織正在尋找一種更簡單、更同質的方式來協調和管理跨 Linux 和 Windows 環境的容器。Kubernetes v1.9 現在提供對 Windows Server 容器的 beta 版支援,使其成為協調任何類型容器的明確選擇。

功能

Kubernetes 中對 Windows Server 容器的 Alpha 版支援非常適合概念驗證專案和視覺化 Kubernetes 中 Windows 支援的路線圖。然而,alpha 版本存在顯著的缺點,並且缺乏許多功能,尤其是在網路方面。SIG-Windows、Microsoft、Cloudbase Solutions、Apprenda 和其他社群成員團結起來創建了一個全面的 beta 版本,使 Kubernetes 使用者能夠開始評估和使用 Windows。

Kubernetes 上 Windows Server 容器的一些主要功能改進包括

  • 改進了對 Pod 的支援!Pod 中的多個 Windows Server 容器現在可以使用 Windows Server 中的網路區隔共享網路命名空間。此功能使 Pod 的概念與基於 Linux 的容器達到同等水平
  • 透過每個 Pod 使用單一網路端點來降低網路複雜性
  • 基於核心的負載平衡,使用虛擬過濾平台 (VFP) Hyper-v 交換器擴展 (類似於 Linux iptables)
  • 容器執行階段介面 (CRI) Pod 和節點層級統計資訊。Windows Server 容器現在可以使用從 Pod 和節點收集的效能指標進行水平 Pod 自動擴展的分析
  • 支援 kubeadm 命令以將 Windows Server 節點新增到 Kubernetes 環境。Kubeadm 簡化了 Kubernetes 叢集的佈建,透過對 Windows Server 的支援,您可以使用單一工具在您的基礎架構中部署 Kubernetes
  • 支援 ConfigMap、Secret 和 Volume。這些是關鍵功能,可讓您將容器的組態與實作分離,並在某些情況下保護容器的組態。然而,Kubernetes 1.9 Windows 支援的皇冠上的寶石是網路增強功能。隨著 Windows Server 1709 的發布,Microsoft 在作業系統和 Windows 主機網路服務 (HNS) 中啟用了關鍵網路功能,這為產生許多與 Kubernetes 中的 Windows Server 容器搭配使用的 CNI 外掛程式鋪平了道路。Kubernetes 1.9 支援的 Layer-3 路由和網路覆蓋外掛程式如下所示
  1. 上游 L3 路由 - 在上游 ToR 中設定的 IP 路由
  2. 主機閘道 - 在每個主機上設定的 IP 路由
  3. 具有覆蓋的 Open vSwitch (OVS) 和 Open Virtual Network (OVN) - 支援 STT 和 Geneve 隧道類型。您可以閱讀更多關於它們的組態、設定和執行階段功能,以便為您在 Kubernetes 中的網路堆疊做出明智的選擇。

即使您必須繼續在 Linux 中運行 Kubernetes 控制平面和主節點元件,您現在也可以將 Windows Server 作為 Kubernetes 中的節點引入。作為一個社群,這是一個巨大的里程碑和成就。我們現在將開始看到 .NET、.NET Core、ASP.NET、IIS、Windows 服務、Windows 可執行檔和更多基於 Windows 的應用程式在 Kubernetes 中運行。

接下來會發生什麼

此 beta 版本投入了大量工作,但社群意識到,在我們可以將 Windows 支援作為 GA (正式發布) 用於生產工作負載之前,還需要更多領域的投資。2018 年前兩個季度的主要重點領域包括

  1. 繼續在網路領域取得進展。其他 CNI 外掛程式正在開發中,即將完成
  • 覆蓋 - win-overlay (使用 Flannel 的 vxlan 或 IP-in-IP 封裝) 
  • Win-l2bridge (主機閘道) 
  • 使用雲端網路的 OVN - 無覆蓋
  • 支援 ovn-kubernetes 中的 Kubernetes 網路政策
  • 支援 Hyper-V 隔離
  • 支援具狀態應用程式的 StatefulSet 功能
  • 產生可在任何基礎架構和跨 Microsoft Azure、Google Cloud 和 Amazon AWS 等多個公有雲供應商上運作的安裝成品和文件
  • SIG-Windows 的持續整合/持續交付 (CI/CD) 基礎架構
  • 可擴展性和效能測試。即使我們尚未承諾 GA 的時間表,SIG-Windows 估計 GA 版本將在 2018 年上半年發布。

參與其中

隨著我們在 Kubernetes 中實現此功能的正式發布方面不斷取得進展,我們歡迎您參與其中、貢獻程式碼、提供回饋、將 Windows Server 容器部署到您的 Kubernetes 叢集,或僅僅加入我們的社群。