本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
聚焦 SIG-Windows
這篇博文講述了 Kubernetes 貢獻者如何協同工作,為 Linux 和 Windows 提供容器編排工具的故事。

大多數熟悉 Kubernetes 的人可能習慣於將其與 Linux 聯絡起來。這種聯絡是有道理的,因為 Kubernetes 從一開始就執行在 Linux 上。然而,許多采用 Kubernetes 的團隊和組織需要能夠在 Windows 上編排容器。自 Docker 釋出和容器普及以來,社群和微軟本身都在努力使容器技術在 Windows 系統中像在 Linux 系統中一樣易於使用。
在 Kubernetes 社群中,那些熱衷於使 Kubernetes 適用於 Windows 社群的人可以在 Windows 特別興趣小組中找到歸屬感。為了更多地瞭解 SIG-Windows 以及 Kubernetes 在 Windows 上的未來,我採訪了聯合主席 Mark Rossetti 和 Michael Michael,瞭解了 SIG 的目標以及其他人如何做出貢獻。
Windows 容器和 Kubernetes 簡介
Kubernetes 是最流行的容器工作負載編排工具,因此要理解 Kubernetes 專案中的 Windows 特別興趣小組 (SIG),首先重要的是要理解我們在談論在 Windows 上執行容器時所指的含義。
“在關注 Kubernetes 中的 Windows 支援時,”SIG(特別興趣小組)聯合主席 Mark Rossetti 和 Michael Michael 說,“許多人開始將其與 Linux 容器進行比較。儘管一些突出限制的比較是公平的,但區分操作限制以及 Windows 和 Linux 作業系統之間的差異非常重要。Windows 容器執行 Windows 作業系統,Linux 容器執行 Linux。”
本質上,任何“容器”都只是在其宿主作業系統上執行的一個程序,並帶有一些關鍵工具來隔離該程序及其依賴項與環境的其餘部分。目標是使該執行中的程序安全隔離,同時佔用系統最少的資源來執行該隔離。在 Linux 上,用於隔離程序以建立“容器”的工具通常歸結為 cgroups 和名稱空間(以及其他一些工具),它們本身就是內置於 Linux 核心中的工具。

如果狗是程序:容器化就像使用 cgroups 為每隻狗提供自己的玩具和食物等資源,並使用名稱空間隔離麻煩的狗。
原生 Windows 程序是必須在 Windows 作業系統上執行的程序。這使得它們與在 Linux 作業系統上執行的程序有著根本的區別。由於 Linux 容器是 Linux 核心工具(cgroups 和名稱空間)隔離的 Linux 程序,因此容器化原生 Windows 程序意味著在 Windows 核心本身中實現類似的隔離工具。因此,“Windows 容器”和“Linux 容器”是根本不同的技術,儘管它們具有相同的目標(隔離程序)並且在某些方面工作方式相似(使用核心級容器化)。
因此,在 Windows 上執行容器時,實際上有兩個非常重要的概念需要考慮
- 作為原生 Windows Server 風格容器執行的原生 Windows 程序,
- 以及在 Linux 核心上執行的傳統 Linux 容器,通常託管在輕量級 Hyper-V 虛擬機器上。
您可以在微軟的這份教程中瞭解更多關於 Linux 和 Windows 容器的資訊。
Kubernetes on Windows
Kubernetes 最初設計時就考慮到了 Linux 容器,並且本身就是為了在 Linux 系統上執行而設計的。正因為如此,Kubernetes 的大部分功能都涉及到獨特的 Linux 功能。Linux 特定的工作是故意的——我們都希望 Kubernetes 在 Linux 上執行得最佳——但對 Windows 伺服器進行類似最佳化的需求正在增長。對於使用者需要在 Windows 上進行容器編排的情況,SIG-Windows 的 Kubernetes 貢獻者社群已經為 Windows 特定用例整合了功能。
“我們經常遇到的一個問題是,我能否擁有一個純 Windows 叢集。答案是否定的。Kubernetes 控制平面元件將繼續基於 Linux,而 SIG-Windows 正在專注於在 Kubernetes 叢集中擁有 Windows 工作節點的使用者體驗。”
SIG-Windows 社群並沒有將“Windows Kubernetes”和“Linux Kubernetes”的概念區分開來,而是致力於為主 Kubernetes 專案新增功能,使其能夠處理 Windows 的用例。這些 Windows 功能反映了 Kubernetes 自 2014 年釋出以來所服務的 Linux 用例,並在某些情況下為其添加了獨特的功能(想了解更多歷史?請滾動查閱這份原始設計文件)。
SIG-Windows 的職責是什麼?
SIG 主席 Mark 和 Michael 表示,“SIG-Windows 確實是 Kubernetes 中所有 Windows 相關事務的中心。” “我們主要關注計算方面,但實際上,任何與在 Windows 上執行 Kubernetes 相關的事情都在 SIG-Windows 的職責範圍內。”
為了更好地服務使用者,SIG-Windows 致力於使 Windows 和 Linux 使用者的 Kubernetes 使用者體驗儘可能保持一致。然而,有些用例只適用於一個作業系統,因此,SIG-Windows 小組也致力於建立 Windows 獨有工作負載的功能。
Kubernetes 中的許多 SIG 或“特殊興趣小組”都有狹窄的焦點,允許成員深入研究技術的某個方面。雖然特定的專業知識受到歡迎,但那些對 SIG-Windows 感興趣的人會發現它是一個很好的社群,可以在 Kubernetes 的許多重點領域建立廣泛的理解。“我們 SIG 的成員與 Kubernetes 中的儲存、網路、測試、叢集生命週期以及其他小組進行互動。”
誰是 SIG-Windows 的使用者?
瞭解一個團隊所創造的技術的最佳方式,通常是瞭解他們的客戶或使用者是誰。
SIG 主席們分享道:“我們接觸過的大多數使用者都擁有執行在 Windows 上的業務關鍵型基礎設施,這些基礎設施已經開發了多年,由於各種原因(成本、時間、合規性等),他們無法將這些工作負載遷移到 Linux。”“透過將這些工作負載轉移到 Windows 容器中並在 Kubernetes 中執行它們,他們能夠快速實現基礎設施現代化,並幫助將其遷移到雲端。”
正如 Kubernetes 領域的任何人都可以證明的那樣,世界各地許多不同行業的公司都將 Kubernetes 視為其基礎設施現代化的途徑。這通常涉及到重新架構甚至完全重塑他們許多業務方式。目標是使他們的系統更具可伸縮性、更健壯,併為未來可能帶來的任何事物做好準備。但並非每個應用程式或工作負載都能或應該改變其執行的核心作業系統,因此許多團隊需要能夠在 Windows、Linux 或兩者上大規模執行容器。
“有時,驅動 Windows 容器的原因是現代化工作,有時是因為硬體保修到期或當前作業系統的支援週期結束。我們在 SIG-Windows 中的努力使 Windows 開發人員能夠利用雲原生工具和 Kubernetes,更快地構建和部署分散式應用程式。這令人興奮!本質上,使用者可以在降低成本的同時保留應用程式可用性的優勢。”
誰是 SIG-Windows?
這些為 Kubernetes 啟用 Windows 工作負載的貢獻者是誰?可能就是您!
與其他 Kubernetes SIG 一樣,SIG-Windows 的貢獻者可以是任何獨立愛好者,也可以是來自不同公司的專業人士。他們來自世界各地,帶來各種不同的技能。

“與大多數其他 Kubernetes SIG 一樣,我們是一個非常熱情和開放的社群,”SIG 聯席主席 Michael Michael 和 Mark Rosetti 解釋道。
成為貢獻者
對於任何有興趣入門的人,聯合主席補充道:“新貢獻者可以在 GitHub 上檢視過去的社群會議(我們記錄了過去三年來的每一次會議),閱讀我們的文件,參加新的社群會議,在現場或 Slack 上提問,並在 GitHub 上提交一些問題。我們還參加所有的 KubeCon 大會,並主持 1-2 場會議、一次貢獻者會議以及與維護者會面辦公時間。”
聯席主席還分享了成為 SIG-Windows 社群成員的途徑概覽。
“我們鼓勵新貢獻者最初只加入我們的社群並傾聽,然後開始提問並瞭解 Kubernetes 中的 Windows。當他們感到舒適時,他們可以提升到改進我們的文件、提交一些 bug/問題,最終他們可以透過修復一些 bug 成為程式碼貢獻者。如果他們對 Windows 做出長期和持續的重大貢獻,他們可以成為 SIG-Windows 的技術負責人或主席。除非您開始,否則您不會知道自己是否喜歡這個領域 :) 要開始,請訪問此入門頁面。這是一個一站式商店,其中包含與 Kubernetes 中的 SIG-Windows 相關的所有連結。”
當被問及新貢獻者是否有任何有用的技能時,聯合主席說,
“我們一直在尋找 Go、網路和儲存方面的專業知識,以及對 Windows 的熱情。這些都是非常重要的技能。然而,我們不要求具備這些技能,我們歡迎任何和所有具有不同技能組合的貢獻者。如果您不瞭解某些東西,我們會幫助您掌握它。”
您可以透過他們的 Slack 頻道與 SIG-Windows 的成員聯絡,或者參加他們定期舉行的會議——目前每週二美國東部時間下午 12:30 舉行 30 分鐘!您可以在 GitHub 上的 SIG-Windows README 中找到他們定期會議的連結,以及過去的會議記錄和錄音。
來自 SIG-Windows 的最後資訊