建立 Amazon EKS 的節點類別 - Amazon EKS

協助改善此頁面

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

若要提供此使用者指南,請選擇位於每個頁面右窗格中的在 GitHub 上編輯此頁面連結。

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

建立 Amazon EKS 的節點類別

Amazon EKS 節點類別可讓您精細控制 EKS Auto Mode 受管節點的組態。節點類別定義適用於 EKS 叢集中節點群組的基礎設施層級設定,包括網路組態、儲存設定和資源標記。本主題說明如何建立和設定節點類別,以符合您的特定操作需求。

當您需要自訂 EKS Auto Mode 如何在預設設定之外佈建和設定 EC2 執行個體時,建立節點類別可讓您精確控制關鍵基礎設施參數。例如,您可以為增強安全性指定私有子網路置放、為效能敏感工作負載設定執行個體暫時性儲存,或為成本分配套用自訂標記。

建立節點類別

若要建立節點類別,請依照下列步驟進行:

  1. 使用節點類別組態建立 YAML 檔案 (例如 nodeclass.yaml)

  2. 使用 將組態套用至您的叢集 kubectl

  3. 參考節點集區組態中的節點類別。如需詳細資訊,請參閱為 EKS Auto 模式建立節點集區

您需要kubectl安裝並設定 。如需詳細資訊,請參閱設定 以使用 Amazon EKS

基本節點類別範例

以下是節點類別範例:

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: private-compute spec: ephemeralStorage: size: "160Gi"

此 NodeClass 會增加節點上的暫時性儲存量。

使用 套用此組態:

kubectl apply -f nodeclass.yaml

接著,在您的節點集區組態中參考節點類別。如需詳細資訊,請參閱為 EKS Auto 模式建立節點集區

建立節點類別存取項目

如果您建立自訂節點類別,則需要建立 EKS 存取項目,以允許節點加入叢集。當您使用內建節點類別和節點集區時,EKS 會自動建立存取項目。

如需存取項目如何運作的詳細資訊,請參閱 授予 IAM 使用者使用 EKS 存取項目存取 Kubernetes

為 EKS Auto Mode 節點類別建立存取項目時,您需要使用EC2存取項目類型。

使用 CLI 建立存取項目

若要建立 EC2 節點的存取項目並關聯 EKS Auto Node 政策:

使用叢集名稱和節點角色 ARN 更新下列 CLI 命令。節點角色 ARN 是在節點類別 YAML 中指定。

# Create the access entry for EC2 nodes aws eks create-access-entry \ --cluster-name <cluster-name> \ --principal-arn <node-role-arn> \ --type EC2 # Associate the auto node policy aws eks associate-access-policy \ --cluster-name <cluster-name> \ --principal-arn <node-role-arn> \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy \ --access-scope type=cluster

使用 CloudFormation 建立存取項目

若要建立 EC2 節點的存取項目並關聯 EKS Auto Node 政策:

使用叢集名稱和節點角色 ARN 更新下列 CloudFormation。節點角色 ARN 是在節點類別 YAML 中指定。

EKSAutoNodeRoleAccessEntry: Type: AWS::EKS::AccessEntry Properties: ClusterName: <cluster-name> PrincipalArn: <node-role-arn> Type: "EC2" AccessPolicies: - AccessScope: Type: cluster PolicyArn: arn:aws:eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy DependsOn: [ <cluster-name> ] # previously defined in CloudFormation

如需有關部署 CloudFormation 堆疊的資訊,請參閱 CloudFormation 入門

節點類別規格

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: my-node-class spec: # Required fields role: MyNodeRole # IAM role for EC2 instances subnetSelectorTerms: - tags: Name: "private-subnet" kubernetes.io/role/internal-elb: "1" # Alternative using direct subnet ID # - id: "subnet-0123456789abcdef0" securityGroupSelectorTerms: - tags: Name: "eks-cluster-sg" # Alternative approaches: # - id: "sg-0123456789abcdef0" # - name: "eks-cluster-security-group" # Optional fields snatPolicy: Random # or Disabled networkPolicy: DefaultAllow # or DefaultDeny networkPolicyEventLogs: Disabled # or Enabled ephemeralStorage: size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T iops: 3000 # Range: 3000-16000 throughput: 125 # Range: 125-1000 # Optional KMS key for encryption kmsKeyID: "arn:aws:kms:region:account:key/key-id" # Accepted formats: # KMS Key ID # KMS Key ARN # Key Alias Name # Key Alias ARN # Optional: Forward proxy, commonly requires certificateBundles as well #for EC2, see https://repost.aws/knowledge-center/eks-http-proxy-containerd-automation advancedNetworking: httpsProxy: http://192.0.2.4:3128 #commonly port 3128 (Squid) or 8080 (NGINX) #Max 255 characters #httpsProxy: http://[2001:db8::4]:3128 # IPv6 address with port, use [] noProxy: #Max 50 entries - localhost #Max 255 characters each - 127.0.0.1 #- ::1 # IPv6 localhost #- 0:0:0:0:0:0:0:1 # IPv6 localhost - 169.254.169.254 # EC2 Instance Metadata Service #- [fd00:ec2::254] # IPv6 EC2 Instance Metadata Service # Domains to exclude, put all VPC endpoints here - .internal - .eks.amazonaws.com # Optional: Custom certificate bundles certificateBundles: - name: "custom-cert" data: "base64-encoded-cert-data" # Optional: Additional EC2 tags (with restrictions) tags: Environment: "production" Team: "platform" # Note: Cannot use restricted tags like: # - kubernetes.io/cluster/* # - karpenter.sh/provisioner-name # - karpenter.sh/nodepool # - karpenter.sh/nodeclaim # - karpenter.sh/managed-by # - eks.amazonaws.com/nodeclass

考量事項