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

SIG-Windows Spotlight

這篇文章講述了 Kubernetes 貢獻者如何協同工作,以提供適用於 Linux 和 Windows 的容器協調器。

Image of a computer with Kubernetes logo

大多數熟悉 Kubernetes 的人可能習慣將其與 Linux 聯繫起來。這種聯繫是有道理的,因為 Kubernetes 從一開始就運行在 Linux 上。然而,許多團隊和組織在採用 Kubernetes 時,需要能夠在 Windows 上協調容器。自從 Docker 發布和容器普及以來,社群和微軟本身都努力使容器技術在 Windows 系統中像在 Linux 系統中一樣易於使用。

在 Kubernetes 社群中,那些熱衷於使 Windows 社群能夠使用 Kubernetes 的人可以在 Windows 特別興趣小組中找到歸屬。為了更了解 SIG-Windows 以及 Kubernetes 在 Windows 上的未來,我與共同主席 Mark RossettiMichael Michael 討論了 SIG 的目標以及其他人如何做出貢獻。

Windows 容器與 Kubernetes 簡介

Kubernetes 是最受歡迎的容器工作負載協調工具,因此為了了解 Kubernetes 專案中的 Windows 特別興趣小組 (SIG),首先務必了解我們談論在 Windows 上運行容器時的含義。


SIG(特別興趣小組)共同主席 Mark Rossetti 和 Michael Michael 表示:「當查看 Kubernetes 中的 Windows 支援時,許多人開始將其與 Linux 容器進行比較。雖然一些突顯限制的比較是公平的,但務必區分操作限制以及 Windows 和 Linux 作業系統之間的差異。Windows 容器運行 Windows 作業系統,而 Linux 容器運行 Linux。」


本質上,任何「容器」都只是在其主機作業系統上運行的進程,並配備了一些關鍵工具,以將該進程及其相依性與環境的其餘部分隔離。

A visual analogy using dogs to explain Linux cgroups and namespaces.

如果狗是進程:容器化就像使用 cgroups 給每隻狗自己的資源(如玩具和食物),並使用命名空間隔離有問題的狗。

原生 Windows 進程是在 Windows 作業系統上運行或必須運行的進程。這使得它們與在 Linux 作業系統上運行的進程從根本上不同。由於 Linux 容器是由稱為 cgroups 和命名空間的 Linux 核心工具隔離的 Linux 進程,因此容器化原生 Windows 進程意味著在 Windows 核心本身內實作類似的隔離工具。因此,「Windows 容器」和「Linux 容器」從根本上是不同的技術,儘管它們具有相同的目標(隔離進程),並且在某些方面的工作方式相似(使用核心級容器化)。

因此,當談到在 Windows 上運行容器時,實際上需要考慮兩個非常重要的概念

  • 以原生 Windows Server 樣式容器運行的原生 Windows 進程,
  • 以及在 Linux 核心上運行的傳統 Linux 容器,通常託管在輕量級 Hyper-V 虛擬機器上。

您可以從 Microsoft 的教學課程中了解更多關於 Linux 和 Windows 容器的資訊。

Windows 上的 Kubernetes

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 的貢獻者可以是從獨立的業餘愛好者到在許多不同公司工作的專業人士的任何人。他們來自世界各地,並帶來許多不同的技能組合。

Image of several people chatting pleasantly

SIG 共同主席 Michael Michael 和 Mark Rossetti 解釋說:「與大多數其他 Kubernetes SIG 一樣,我們是一個非常受歡迎且開放的社群。」

成為貢獻者

對於任何有興趣入門的人,共同主席補充說:「新貢獻者可以在 GitHub 上查看舊的社群會議(我們記錄了過去三年的每一次會議),閱讀我們的文件,參加新的社群會議,親自或在 Slack 上提問,並在 Github 上提交一些問題。我們還參加所有 KubeCon 大會,並舉辦 1-2 場會議、貢獻者會議和與維護者會面的辦公時間。」

共同主席還分享了成為 SIG-Windows 社群成員的途徑。

「我們鼓勵新的貢獻者最初只是加入我們的社群並傾聽,然後開始提出一些問題並了解 Kubernetes 中的 Windows。當他們感到舒適時,他們可以進階到改進我們的文件、提交一些錯誤/問題,最終他們可以透過修復一些錯誤成為程式碼貢獻者。如果他們對 Windows 有長期且持續的重大貢獻,他們就可以成為技術主管或 SIG-Windows 的主席。除非您開始,否則您不會知道自己是否喜歡這個領域 :) 若要開始,請造訪此入門頁面。這是一個一站式商店,其中包含指向 Kubernetes 中與 SIG-Windows 相關的所有內容的連結。」

當被問及新貢獻者是否有任何有用的技能時,共同主席說:

「我們一直在尋找 Go 和網路與儲存方面的專業知識,以及對 Windows 的熱情。這些都是非常重要的技能。然而,我們不要求具備這些技能,並且我們歡迎任何和所有具有不同技能組合的貢獻者。如果您不知道某些知識,我們將協助您取得。」

您可以透過他們的 Slack 頻道與 SIG-Windows 的人員聯繫,或參加他們的定期會議之一——目前每週二美國東部時間下午 12:30 舉行,時長 30 分鐘!您可以從 GitHub 上的 SIG-Windows README 中找到他們的定期會議連結以及過去的會議記錄和錄音。

作為來自 SIG-Windows 的結束語


「我們歡迎您參與並加入我們的社群,分享回饋和部署故事,並為程式碼、文件和任何類型的改進做出貢獻。」