跳至主要内容

在 Windows 叢集上啟動 Kubernetes

當佈建自訂叢集時,Rancher 使用 RKE2 在您現有的節點上安裝 Kubernetes。

在使用 Rancher 佈建的 Windows 叢集中,叢集必須同時包含 Linux 和 Windows 節點。Kubernetes 控制平面只能在 Linux 節點上運行,而 Windows 節點只能擁有工作節點角色。Windows 節點只能用於部署工作負載。

有關 Windows 中支援的 Kubernetes 功能的摘要,請參閱 Kubernetes 文件中關於在 Windows 中使用 Kubernetes 的支援功能和限制或在 Kubernetes 中排程 Windows 容器的指南。

Windows 叢集的 RKE2 功能​

以下列出了 Windows 叢集佈建的主要 RKE2 功能:

  • 由 containerd 提供支援的 Windows 容器與 RKE2
  • 直接從 Rancher UI 新增佈建 Windows RKE2 自訂叢集
  • Windows RKE2 自訂叢集的 Calico 和 Flannel CNI
  • Windows Server 的 SAC 版本(2004 和 20H2)包含在技術預覽中
備註

預設情況下,Rancher 將允許 Windows 工作負載 Pod 部署在 Windows 和 Linux 工作節點上。在 RKE2 中建立混合叢集時,您必須編輯 chart 中的 nodeSelector 以將 Pod 導向到相容的 Windows 節點。有關如何使用 nodeSelector 將 Pod 分配到節點的更多資訊,請參閱 Kubernetes 文件。

  • Windows RKE2 中的 HostProcess 容器在 Kubernetes v1.24.1 及更高版本中受支援。有關更多資訊,請參閱上游文件。

一般需求​

Windows 節點的一般網路和作業系統需求與其他 Rancher 安裝相同。

OS 需求​

我們對 Windows Server 和 Windows 容器的支援與 Microsoft 官方 LTSC(長期服務通道)和 SAC(半年通道)的生命週期相符。

有關 Windows Server 的支援生命週期日期,請參閱 Microsoft 文件。

Kubernetes 版本​

有關 Kubernetes 元件版本的更多資訊,請參閱 RKE2 版本的支援矩陣。

節點需求​

叢集中的主機至少需要:

  • 2 核心 CPU
  • 5 GB 記憶體
  • 50 GB 磁碟空間

如果節點不符合這些需求,Rancher 將不會佈建該節點。

網路需求​

在佈建新叢集之前,請確保您已在接受入站網路流量的裝置上安裝 Rancher。這是為了讓叢集節點能夠與 Rancher 通訊所必需的。如果您尚未安裝 Rancher,請在繼續本指南之前參閱安裝文件。

Rancher 支援使用 Calico 和 Flannel 作為網路提供者的 Windows。

如果您為 AWS 虛擬私有雲配置 DHCP 選項集,請注意在 domain-name 選項欄位中,只能指定一個網域名稱。根據 DHCP 選項文件:

備註

某些 Linux 作業系統接受由空格分隔的多個網域名稱。但是,其他 Linux 作業系統和 Windows 將該值視為單個網域,這會導致意外行為。如果您的 DHCP 選項集與具有多個作業系統實例的 VPC 關聯,請僅指定一個網域名稱。

在 ESXi 6.7u2 及更高版本上使用 VMware vSphere 的 Rancher​

如果您在 ESXi 6.7u2 或更高版本的 VMware vSphere 上使用 Rancher,並使用 Red Hat Enterprise Linux 8.3、CentOS 8.3 或 SUSE Enterprise Linux 15 SP2 或更高版本,則需要停用 vmxnet3 虛擬網路介面卡硬體卸載功能。如果不這樣做,不同叢集節點上的 Pod 之間的所有網路連接都將因逾時錯誤而失敗。從 Windows Pod 到在 Linux 節點上運行的關鍵服務(例如 CoreDNS)的所有連接也將失敗。外部連接也可能失敗。此問題是 Linux 發行版在 vmxnet3 中啟用硬體卸載功能以及 vmxnet3 硬體卸載功能中的錯誤導致丟棄訪客覆蓋流量的封包所致。要解決此問題,需要停用 vmxnet3 硬體卸載功能。此設定在重新啟動後不會保留,因此需要在每次啟動時停用。建議的做法是在 /etc/systemd/system/disable_hw_offloading.service 建立一個 systemd 單元檔案,在啟動時停用 vmxnet3 硬體卸載功能。停用 vmxnet3 硬體卸載功能的範例 systemd 單元檔案如下。請注意,<VM network interface> 必須自訂為主機 vmxnet3 網路介面,例如 ens192:

[Unit]
Description=Disable vmxnet3 hardware offloading feature

[Service]
Type=oneshot
ExecStart=ethtool -K <VM network interface> tx-udp_tnl-segmentation off
ExecStart=ethtool -K <VM network interface> tx-udp_tnl-csum-segmentation off
StandardOutput=journal

[Install]
WantedBy=multi-user.target

然後在 systemd 單元檔案上設定適當的權限:

chmod 0644 /etc/systemd/system/disable_hw_offloading.service

最後,啟用 systemd 服務:

systemctl enable disable_hw_offloading.service

架構需求​

Kubernetes 叢集管理節點(etcd 和 controlplane)必須在 Linux 節點上運行。

worker 節點是您的工作負載將部署的位置,通常是 Windows 節點,但必須至少有一個在 Linux 上運行的 worker 節點,以運行 Rancher 叢集代理、DNS、指標伺服器和 Ingress 相關容器。

建議的架構​

我們建議使用下表中列出的最少三節點架構,但您始終可以新增更多 Linux 和 Windows 工作節點以擴展叢集以實現冗餘:

節點作業系統Kubernetes 叢集角色目的
節點 1Linux(建議使用 Ubuntu Server 18.04)控制平面、etcd、工作節點管理 Kubernetes 叢集
節點 2Linux(建議使用 Ubuntu Server 18.04)工作節點支援叢集的 Rancher 叢集代理、指標伺服器、DNS 和 Ingress
節點 3Windows(需要 Windows Server core 版本 1809 或更高版本,建議使用版本 2022)工作節點運行您的 Windows 容器

容器需求​

Windows 要求容器必須建立在與其部署的 Windows Server 版本相同的版本上。因此,容器必須建立在 Windows Server core 版本 1809 或更高版本上。如果您有為早期 Windows Server core 版本建立的現有容器,則必須在 Windows Server core 版本 1809 或更高版本上重新建立它們。

雲端提供者特定需求​

如果您在叢集中設定 Kubernetes 雲端提供者,則需要一些額外的步驟。您可能希望設定雲端提供者以利用功能來自動佈建儲存、負載平衡器或叢集的其他基礎設施。有關如何配置滿足先決條件的節點的雲端提供者叢集的詳細資訊,請參閱此頁面。

如果您使用 GCE(Google Compute Engine)雲端提供者,您必須執行以下操作:

  • 按照這些步驟在 cluster.yml 中啟用 GCE 雲端提供者。
  • 在 Rancher 中佈建叢集時,在 Rancher UI 中選擇自訂雲端提供者作為雲端提供者。

教學:如何建立支援 Windows 的叢集​

本教學說明如何使用建議的架構中的三個節點建立 Rancher 佈建的叢集。

要設定支援 Windows 節點和容器的叢集,您需要完成以下任務。

1. 佈建主機​

要開始在支援 Windows 的現有節點上佈建叢集,請準備您的主機。

您的主機可以是:

  • 雲端託管 VM
  • 虛擬化叢集中的 VM
  • 裸機伺服器

您將佈建三個節點:

  • 一個 Linux 節點,管理 Kubernetes 控制平面,儲存您的 etcd,並可選擇作為工作節點
  • 第二個 Linux 節點,將是另一個工作節點
  • Windows 節點,將作為工作節點運行您的 Windows 容器
節點作業系統
節點 1Linux(建議使用 Ubuntu Server 18.04)
節點 2Linux(建議使用 Ubuntu Server 18.04)
節點 3Windows(需要 Windows Server core 版本 1809 或更高版本,建議使用版本 2022)

如果您的節點由雲端提供者託管,並且您希望自動化支援(例如負載平衡器或持久儲存裝置),您的節點有額外的配置需求。有關詳細資訊,請參閱選擇雲端提供者。

2. 在現有節點上建立叢集​

在現有節點上建立 Windows 叢集的說明與建立自訂叢集的一般說明非常相似,但有一些 Windows 特定的需求。

  1. 在左上角,點擊 ☰ > 叢集管理。
  2. 在叢集頁面上,點擊建立。
  3. 點擊自訂。
  4. 在叢集名稱欄位中輸入叢集的名稱。
  5. 在 Kubernetes 版本下拉選單中,選擇支援的 Kubernetes 版本。
  6. 在容器網路欄位中,選擇 Calico 或 Flannel。
  7. 點擊建立。

3. 將節點新增到叢集​

本節說明如何將 Linux 和 Worker 節點註冊到您的叢集。您將在每個節點上運行一個命令,該命令將安裝 rancher system agent 並允許 Rancher 管理每個節點。

新增 Linux Master 節點​

在本節中,我們在 Rancher UI 上填寫一個表單以獲取自訂命令,以在 Linux master 節點上安裝 Rancher agent。然後我們將複製該命令並在 Linux master 節點上運行它以在叢集中註冊該節點。

叢集中的第一個節點應該是同時具有 Control Plane 和 etcd 角色的 Linux 主機。至少必須為此節點啟用這兩個角色,並且必須先將此節點新增到叢集中,然後才能新增 Windows 主機。

  1. 建立叢集後,導航到註冊頁籤。
  2. 在步驟 1 的節點角色部分,選擇所有三個角色。雖然您可以只選擇 etcd 和 Control Plane 角色,但我們建議選擇所有三個。
  3. 可選:如果您點擊顯示進階,您可以配置額外的設定,例如指定 IP 位址、覆寫節點主機名稱,或向節點新增標籤或污點。
  4. 在步驟 2 的註冊部分,將螢幕上顯示的命令複製到剪貼簿。
  5. SSH 到您的 Linux 主機並運行您複製到剪貼簿的命令。

結果:

您的叢集已建立並被分配更新中的狀態。Rancher 正在建立您的叢集。

節點註冊並出現在機器頁籤下可能需要幾分鐘。

一旦叢集狀態變更為活躍,您就可以存取叢集。

新增 Linux Worker 節點​

在本節中,我們運行一個命令來將 Linux 工作節點註冊到叢集。

在叢集的初始佈建之後,您的叢集只有一個 Linux 主機。新增另一個 Linux worker 主機以支援叢集的 Rancher 叢集代理、指標伺服器、DNS 和 Ingress。

  1. 建立叢集後,導航到註冊頁籤。
  2. 在步驟 1 的節點角色部分,選擇 Worker。
  3. 可選:如果您點擊顯示進階,您可以配置額外的設定,例如指定 IP 位址、覆寫節點主機名稱,或向節點新增標籤或污點。
  4. 在步驟 2 的註冊部分,將螢幕上顯示的命令複製到剪貼簿。
  5. SSH 到您的 Linux 主機並運行您複製到剪貼簿的命令。

結果:

Worker 角色已安裝在您的 Linux 主機上,該節點已向 Rancher 註冊。節點在您的叢集中註冊可能需要幾分鐘。

備註

Linux Worker 節點上的污點

對於新增到叢集中的每個 Linux 工作節點,以下污點將被新增到 Linux 工作節點。透過向 Linux 工作節點新增此污點,新增到 Windows 叢集的任何工作負載將自動排程到 Windows 工作節點。如果您想將工作負載專門排程到 Linux 工作節點,您需要向這些工作負載新增容忍度。

污點鍵污點值污點效果
cattle.io/oslinuxNoSchedule

新增 Windows Worker 節點​

在本節中,我們運行一個命令來將 Windows 工作節點註冊到叢集。

備註

只有在叢集與 Linux etcd、控制平面和工作節點一起運行後,才會出現新增 Windows 工作節點的註冊命令。

  1. 建立叢集後,導航到註冊頁籤。
  2. 在步驟 1 的節點角色部分,選擇 Worker。
  3. 可選:如果您點擊顯示進階,您可以配置額外的設定,例如指定 IP 位址、覆寫節點主機名稱,或向節點新增標籤或污點。
  4. 在步驟 2 的註冊部分,將螢幕上顯示的 Windows 工作節點命令複製到剪貼簿。
  5. 使用您偏好的工具(例如 Microsoft Remote Desktop)登入您的 Windows 主機。以管理員身份在 PowerShell Console 中運行複製到剪貼簿的命令。
  6. 可選:如果您想將更多 Windows 節點新增到叢集,請重複這些說明。

結果:

Worker 角色已安裝在您的 Windows 主機上,該節點已向 Rancher 註冊。節點在您的叢集中註冊可能需要幾分鐘。

您現在有一個 Windows Kubernetes 叢集。

可選的後續步驟​

建立叢集後,您可以透過 Rancher UI 存取它。作為最佳實踐,我們建議設定以下存取叢集的替代方式:

  • 使用 kubectl CLI 存取您的叢集: 按照這些步驟在您的工作站上使用 kubectl 存取叢集。在這種情況下,您將透過 Rancher 伺服器的身份驗證代理進行身份驗證,然後 Rancher 將您連接到下游叢集。此方法可讓您在沒有 Rancher UI 的情況下管理叢集。
  • 使用 kubectl CLI 透過授權叢集端點存取您的叢集: 按照這些步驟直接使用 kubectl 存取您的叢集,而無需透過 Rancher 伺服器進行身份驗證。我們建議設定此替代方法來存取您的叢集,以便在無法連接到 Rancher 的情況下,您仍然可以存取叢集。

在 Azure 中配置儲存類別​

如果您的節點使用 Azure VM,您可以使用 Azure Files 作為叢集的 StorageClass。有關詳細資訊,請參閱本節。