容器運行時在雲原生和 Rancher 上的演進
使用體積比 Docker 更小的容器運行時正成爲雲原生生態系統的發展趨勢。這種轉變爲羣集運營商帶來了新的選擇,同時也要求羣集運營商重新評估自己的 Kubernetes 容器運行時。
SUSE Rancher 預見到了這一趨勢,並在開源的 containerd 容器運行時上構建了兩個 Kubernetes 發行版——K3s 和 RKE 2。RKE 2 是全面兼容的 Kubernetes 發行版,它基於 K3s 構建,更側重於安全性和合規性。
基於 containerd 的 RKE2 是 Rancher 管理 Windows 容器的未來趨勢。
過渡到 RKE 2 能夠提升安全性,爲使用 Windows 容器的客戶提供更豐富的功能,提升 Windows 與 Linux 容器的功能對等性,並支持 Linux 與 Windows 工作負載在 Rancher 環境下的並行動態部署。
本文將介紹基於 RKE 1 的 Windows 容器的演進和基於 RKE 2 的 Windows 容器最新進展,並探討客戶將 Windows 容器工作負載遷移到 RKE 2 時需要考慮的因素和採取的措施。
RKE 1 上的 Windows 容器演進
Rancher 2.3 版本首次通過 RKE 1 支持 Windows 容器 (https://github.com/rancher/rancher/releases/tag/v2.3.0)。
在 RKE 1 上,Windows 容器採用 Docker EE 運行時,該運行時通過 Microsoft 和 Docker 的合作已內置到 Windows Server 2016 及更高的版本中。
通過 RKE 1,Rancher 用戶可爲 Windows 工作負載指定一個集羣,作爲自定義集羣配置的一部分。然後,將污點和容忍度應用於節點上,從而將 Windows 工作負載調度到合適的節點上。
這些特殊的 Windows 集羣無法轉換爲 Linux 集羣,也無法輕鬆運行 Linux 和 Windows 混合工作負載。
這是在 Rancher 上支持 Windows 容器重要的第一步,但對於 Windows 和 Linux 節點同時運行的混合操作系統生態,這種方法有很多侷限性。
這就需要一個新的方法。
在 RKE 2 上運行 Windows 容器
Rancher 2.6.0 技術預覽版首次在 RKE 2 上推出了 Windows 容器 (https://github.com/rancher/rancher/releases/tag/v2.6.0)。
RKE 2 上的 Windows 容器由 containerd 運行時和 Calico CNI 提供支持,首次爲 Rancher 上的 Windows 容器啓用網絡策略。
RKE 2 上的 Windows 容器還推出了一種新的集羣配置架構模型,適用於混合 Linux 和 Windows 集羣。這種新模型放棄了特定於 Windows 的集羣以及對污點和容忍度的使用限制。
RKE 2 上的 Windows 容器採用了更具適應性、更動態的集羣配置方法。RKE 2 採用 nodeSelector 標籤在適當的 OS 節點上調度工作負載,配置時不再需要聲明 Windows 集羣,也不僅限於運行 Windows 工作負載。
通過這種新模型,用戶能夠更靈活地將 Linux 和 Windows 工作負載一起部署到同一個集羣上。例如,在單個集羣中,用戶現在可以在 Windows 節點上部署完整的 .NET 框架應用,並在 Linux 節點上部署 SQL Server,而且規劃和配置更加簡單。
RKE 2 上的 Windows 容器發展
在 Rancher 2.6.4 版本(Rancher 的最新版本)中,RKE 2 上的 Windows 容器也將 GA,它將超越 RKE 1 上的 Windows 容器,爲 Rancher 上的 Windows 和 Linux 容器提供更加對等的功能。
Rancher的Windows 團隊一直在開放狀態下進行開發(https://github.com/rancher/windows/projects),過程完全透明。
RKE 2 上的 Windows 容器支持 Windows Server 2019 和 Windows Server 2022,這兩項都是 Windows Server 的 LTSC 分支。
對於 RKE 1 上的 Windows 容器,用戶升級時需考慮許多重要因素。
棄用 Windows Server 上的 Docker EE
自 2022 年 9 月起,Microsoft 將不再支持 Docker EE (Updates to the Windows Container Runtime support - Microsoft Tech Community)。屆時,客戶需要尋找另一個容器運行時解決方案,例如 Rancher 提供的基於containerd RKE 2。
一直到 2022 年 9 月,Microsoft 都將爲 Mirantis 容器運行時提供臨時支持,作爲 Docker EE 的臨時替代。9 月之後,客戶需要簽署 Mirantis 容器運行時相關付費協議。這意味着 RKE 1 上的 Windows 容器用戶需要支付額外的費用。對於在 Mirantis 容器運行時上部署的工作負載,Rancher 無法提供完整的全棧支持。
SUSE Rancher 建議用戶開始向自帶 containerd 運行時的基於 RKE 2 的 Windows 容器過渡。客戶應儘快開始在 2.6.0+ 版本中對基於 RKE2 的 Windows 容器進行工作負載測試,以免 2022 年 9 月過後還需要單獨購買 Mirantis 支持協議。
在技術預覽階段,如果用戶在測試 RKE 2 上的 Windows 容器時遇到問題,可在 Rancher Windows GitHub 中提出 (https://github.com/rancher/windows/issues)。
從 RKE 1 升級到 RKE 2
RKE 1 中採用的是配置 Windows 專用集羣的方法,而 RKE 2 則採用了更爲自由的混合操作系統集羣,因此,RKE 1 上的 Windows 容器無法直接遷移到 RKE 2。
SUSE Rancher 建議,客戶在 RKE 2 技術預覽版中測試 Windows 容器上的工作負載時,需開始規劃使用 Fleet 重構 RKE 2 上的 Windows 工作負載 (https://fleet.rancher.io/)。Fleet 是 Rancher 的 GitOps 解決方案,現在可以直接集成到 Rancher 中,並支持 Windows 容器。
瞭解更多,請參考:https://github.com/rancher/windows/issues/150