Windows 作業整備規格介紹
自從 Windows 支援在 2019 年 Kubernetes 1.14 版本升級為穩定版以來,終端使用者社群非常讚賞執行 Windows 工作負載的功能。Windows 工作負載支援的程度和可用性一直是大型企業所使用 Kubernetes 發行版的主要差異化因素。然而,隨著更多 Windows 工作負載遷移到 Kubernetes,以及持續發布新的 Windows 功能,以有效且標準化的方式測試 Windows 工作節點變得具有挑戰性。
Kubernetes 專案重視在不要求不打算提供 Windows 的已認證發行版或服務的封閉原始碼授權的情況下,進行一致性認證的能力。
SIG Windows 注意到一些值得注意的範例:
- 負載平衡器來源位址範圍功能在 Windows 節點上無法正確運作的問題,詳情請參閱 GitHub 問題:kubernetes/kubernetes#120033。
- Windows 功能的功能問題報告,例如「GMSA 無法與 containerd 搭配運作」,在 microsoft/Windows-Containers#44 中討論。
- 客觀評估跨不同作業系統組態的容器網路介面 (CNI) 外掛程式的網路政策測試開發挑戰,如 kubernetes/kubernetes#97751 中所述。
因此,SIG Windows 意識到需要量身打造的解決方案,以確保 Windows 節點在部署到生產環境之前,其運作就緒。因此,開發 Windows 運作就緒規格 的想法應運而生。
我們不能直接執行官方一致性測試嗎?
Kubernetes 專案包含一組 一致性測試,這些是旨在確保 Kubernetes 叢集符合必要的 Kubernetes 規格的標準化測試。
然而,這些測試最初是在 Linux 是唯一與 Kubernetes 相容的作業系統時定義的,因此,它們不容易擴展以用於 Windows。鑑於 Windows 工作負載雖然重要,但在 Kubernetes 社群中僅佔一小部分,因此務必確保許多 Kubernetes 發行版用來認證 Linux 一致性的主要一致性套件,不會因 Windows 特定功能或增強功能(例如 GMSA 或多作業系統 kube-proxy 行為)而變得累贅。
因此,由於存在對 Windows 一致性測試的特殊需求,SIG Windows 選擇透過 Windows 運作就緒規格提供 Windows 特定的一致性測試。
我們不能直接執行 Kubernetes 端對端測試套件嗎?
在 Linux 世界中,諸如 Sonobuoy 之類的工具簡化了一致性套件的執行,讓使用者無需了解 Kubernetes 的編譯路徑或 Ginkgo 標籤的語意。
關於需要編譯 Kubernetes 測試,我們意識到 Windows 使用者可能會同樣覺得從頭開始編譯和執行 Kubernetes e2e 套件的過程令人不悅,因此,顯然需要提供使用者友善、隨時可用的「按鈕式」解決方案。此外,關於 Ginkgo 標籤,透過一組 Ginkgo 標籤將一致性測試應用於 Windows 節點,對於任何使用者(包括 Linux 愛好者或經驗豐富的 Windows 系統管理員)來說,也將是繁瑣的。
為了彌合差距,並為使用者提供一種直接的方式來確認其叢集支援各種功能,Kubernetes SIG for Windows 認為有必要建立 Windows 運作就緒應用程式。此應用程式以 Go 撰寫,簡化了執行必要 Windows 特定測試的流程,同時以清晰且易於存取的格式交付結果。
此倡議是一項協作努力,來自不同雲端供應商和平台的貢獻,包括 Amazon、Microsoft、SUSE 和 Broadcom。
更深入了解 Windows 運作就緒規格
Windows 運作就緒規格特別針對並執行 Kubernetes 儲存庫中的測試,其方式比僅針對 Ginkgo 標籤更使用者友善。它引入了一個結構化的測試套件,該套件分為核心和擴展測試集,每個測試集都包含針對測試特定測試領域(例如網路)的類別。核心測試針對 Kubernetes 規格定義的 Windows 節點應支援的基本和關鍵功能。另一方面,擴展測試涵蓋更複雜的功能,更符合深入研究 Windows 特定功能(例如與 Active Directory 的整合)。這些測試的目標是廣泛,涵蓋各種 Windows 特定功能,以確保與各種工作負載和組態的相容性,超出基本要求。以下是目前的類別清單。
類別名稱 | 類別描述 |
---|---|
Core.Network | 測試最基本的網路功能(存取 Pod 對 Pod IP 的能力)。 |
Core.Storage | 測試最基本的儲存功能(掛載 hostPath 儲存卷的能力)。 |
Core.Scheduling | 測試最基本的排程功能(排程具有 CPU 限制的 Pod 的能力)。 |
Core.Concurrent | 測試最基本並行功能(節點同時處理多個 Pod 流量的能力)。 |
Extend.HostProcess | 測試與 Windows HostProcess Pod 功能相關的功能。 |
Extend.ActiveDirectory | 測試與 Active Directory 功能相關的功能。 |
Extend.NetworkPolicy | 測試與網路政策功能相關的功能。 |
Extend.Network | 測試進階網路功能(支援 IPv6 的能力) |
Extend.Worker | 測試與 Windows 工作節點功能相關的功能(節點存取相同叢集中 TCP 和 UDP 服務的能力) |
如何執行 Windows 節點的運作就緒測試
若要執行 Windows 運作就緒測試套件,請參閱測試套件的 README
,其中說明如何設定和執行它。測試套件在如何執行測試方面提供了彈性,您可以使用編譯後的二進位檔案或 Sonobuoy 外掛程式來執行測試。您也可以選擇針對整個測試套件執行測試,或指定類別清單。雲端供應商可以選擇上傳其一致性結果,以提高透明度和可靠性。
一旦您簽出該程式碼,即可執行測試。例如,此範例命令會執行 Core.Concurrent
類別中的測試
./op-readiness --kubeconfig $KUBE_CONFIG --category Core.Concurrent
作為 Kubernetes 的貢獻者,如果您想使用 Windows 運作就緒規格針對特定提取請求測試您的變更,請在新提取請求中使用以下機器人命令。
/test operational-tests-capz-windows-2019
展望未來
我們期待透過在 Kubernetes 儲存庫中新增測試,以及識別可以針對的現有測試案例,來改進我們精選的 Windows 特定測試清單。該規格的長期目標是持續增強 Windows 工作節點的測試涵蓋範圍,並提高 Windows 支援的穩健性,從而在各種雲端環境中促進無縫體驗。我們也計畫將 Windows 運作就緒測試整合到官方 Kubernetes 一致性套件中。
如果您有興趣協助我們,請與我們聯繫!我們歡迎任何形式的協助,從提供一次性意見反應到貢獻程式碼,再到擁有長期負責人來協助我們推動變更。Windows 運作就緒規格由 SIG Windows 團隊擁有。您可以在 Kubernetes Slack 工作區 #sig-windows 頻道上聯繫該團隊。您也可以瀏覽 Windows 運作就緒測試套件,並直接向 GitHub 儲存庫做出貢獻。
特別感謝 Kulwant Singh (AWS)、Pramita Gautam Rana (VMWare)、Xinqi Li (Google) 和 Marcio Morales (AWS) 協助對規格做出顯著貢獻。此外,感謝 SIG Windows 團隊的 James Sturtevant (Microsoft)、Mark Rossetti (Microsoft)、Claudiu Belu (Cloudbase Solutions) 和 Aravindh Puthiyaparambil (Softdrive Technologies Group Inc.) 的指導和支援。