Windows 工作者節點 - Eksctl 使用者指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Windows 工作者節點

從 1.14 版開始,Amazon EKS 支援允許執行 Windows 容器的 Windows 節點。除了具有 Windows 節點之外,叢集中的 Linux 節點也必須執行 CoreDNS,因為 Microsoft 尚不支援主機網路模式。因此,Windows EKS 叢集將是 Windows 節點和至少一個 Linux 節點的混合。Linux 節點對叢集的運作至關重要,因此,對於生產級叢集,建議至少有兩個適用於 HA 的 t2.large Linux 節點。

注意

您不再需要在 Linux 工作者節點上安裝 VPC 資源控制器,即可在 2021 年 10 月 22 日之後建立的 EKS 叢集中執行 Windows 工作負載。您可以透過 ConfigMap 設定在 EKS 控制平面上啟用 Windows IP 地址管理 (詳細資訊請參閱 link:eks/latest/userguide/windows-support.html)。eksctl 會在建立 Windows 節點群組時自動修補 ConfigMap 以啟用 Windows IP 地址管理。

使用 Windows 支援建立新的叢集

組態檔案語法允許在單一命令中使用 Windows 支援建立功能完整的叢集:

# cluster.yaml
# An example of ClusterConfig containing Windows and Linux node groups to support Windows workloads
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: windows-cluster
  region: us-west-2

nodeGroups:
  - name: windows-ng
    amiFamily: WindowsServer2019FullContainer
    minSize: 2
    maxSize: 3

managedNodeGroups:
  - name: linux-ng
    instanceType: t2.large
    minSize: 2
    maxSize: 3

  - name: windows-managed-ng
    amiFamily: WindowsServer2019FullContainer
    minSize: 2
    maxSize: 3
eksctl create cluster -f cluster.yaml

若要使用 Windows 未受管節點群組建立新叢集而不使用組態檔案,請發出下列命令:

eksctl create cluster --managed=false --name=windows-cluster --node-ami-family=WindowsServer2019CoreContainer

將 Windows 支援新增至現有的 Linux 叢集

若要在具有 Linux 節點 (AmazonLinux2 AMI 系列) 的現有叢集上啟用執行 Windows 工作負載,您需要新增 Windows 節點群組。

新增對 Windows 受管節點群組的支援 (--managed=true 或省略旗標)。

eksctl create nodegroup --managed=false --cluster=existing-cluster --node-ami-family=WindowsServer2019CoreContainer eksctl create nodegroup --cluster=existing-cluster --node-ami-family=WindowsServer2019CoreContainer

為了確保工作負載排程在正確的作業系統上,它們必須具有nodeSelector目標鎖定其必須在其上執行的作業系統:

# Targeting Windows nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64
# Targeting Linux nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64

如果您使用的叢集早於 1.19 kubernetes.io/oskubernetes.io/arch標籤,則需要beta.kubernetes.io/arch分別以 beta.kubernetes.io/os和 取代。

詳細資訊