本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes v1.9 釋出對 Windows Server 容器的 Beta 支援
釋出時,Michael Michael 擔任 SIG-Windows 負責人。
隨著 Kubernetes v1.9 的釋出,我們確保 Kubernetes 在任何地方都能良好執行併為所有人服務的使命邁出了一大步。我們已將對 Windows Server 的支援提升到測試版,同時在 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 容器的測試版支援,使其成為協調各種容器的明確選擇。
功能
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 和節點級別統計資訊。現在可以使用從 Pod 和節點收集的效能指標對 Windows Server 容器進行 Horizontal Pod Autoscaling 的分析。
- 支援 kubeadm 命令將 Windows Server 節點新增到 Kubernetes 環境。Kubeadm 簡化了 Kubernetes 叢集的供應,並且透過對 Windows Server 的支援,您可以使用單個工具在您的基礎架構中部署 Kubernetes。
- 支援 ConfigMaps、Secrets 和 Volumes。這些是關鍵功能,允許您將容器的配置與實現分離,並在某些情況下保護配置。然而,Kubernetes 1.9 Windows 支援的亮點在於網路增強。隨著 Windows Server 1709 的釋出,Microsoft 在作業系統和 Windows 主機網路服務 (HNS) 中啟用了關鍵網路功能,這為開發出許多與 Kubernetes 中的 Windows Server 容器配合使用的 CNI 外掛鋪平了道路。Kubernetes 1.9 支援的 Layer-3 路由和網路覆蓋外掛如下所示:
- 上游 L3 路由 - 在上游 ToR 中配置的 IP 路由
- 主機閘道器 - 在每個主機上配置的 IP 路由
- 帶覆蓋的 Open vSwitch (OVS) 和 Open Virtual Network (OVN) - 支援 STT 和 Geneve 隧道型別。您可以閱讀有關它們各自的配置、設定和執行時功能的更多資訊,以便為 Kubernetes 中的網路堆疊做出明智的選擇。
儘管您必須繼續在 Linux 中執行 Kubernetes 控制平面和主元件,但現在您可以將 Windows Server 作為 Kubernetes 中的節點引入。作為一個社群,這是一個巨大的里程碑和成就。我們現在將開始在 Kubernetes 中看到 .NET、.NET Core、ASP.NET、IIS、Windows Services、Windows 可執行檔案以及更多基於 Windows 的應用程式。
接下來是什麼
這個測試版的釋出投入了大量工作,但社群意識到在我們將 Windows 支援作為生產工作負載的 GA(通用可用性)釋出之前,還需要投入更多領域。2018 年前兩個季度的一些重點領域包括:
- 繼續在網路領域取得進展。其他 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 叢集,或只是加入我們的社群。
- 如果您想開始在 Kubernetes 中部署 Windows Server 容器,請閱讀我們的入門指南:/docs/getting-started-guides/windows/
- 我們每隔一週的星期二東部標準時間 (EST) 下午 12:30 在 https://zoom.us/my/sigwindows 舉行會議。我們所有的會議都在 YouTube 上錄製,並可在 https://www.youtube.com/playlist?list=PL69nYSiGNLP2OH9InCcNkWNu2bl-gmIU4 查閱。
- 在 Slack 上與我們聊天:https://kubernetes.slack.com/messages/sig-windows
- 在 GitHub 上找到我們:https://github.com/kubernetes/community/tree/master/sig-windows