協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
建立具有混合節點的 Amazon EKS 叢集
本主題提供可用選項的概觀,並介紹建立已啟用混合節點的 Amazon EKS 叢集時需要考量的事項。EKS 混合節點與包含雲端節點的 Amazon EKS 叢集具有相同的 Kubernetes 版本支援,包括標準支援和延長支援。
如果您未打算使用 EKS 混合節點,請參閱 建立 Amazon EKS 叢集 中的主要 Amazon EKS 建立叢集文件。
先決條件
-
混合節點的先決條件設定 已完成。建立已啟用混合節點的叢集之前,您必須識別出內部部署節點和選用的 Pod CIDR,根據 EKS 要求和混合節點要求建立 VPC 和子網路,以及建立具有適用於內部部署和選用 Pod CIDR 的傳入規則的安全群組。如需有關這些先決條件的詳細資訊,請參閱 準備混合節點的聯網。
-
已在裝置上安裝和設定 AWS 命令列介面 (AWS CLI) 的最新版本。若要檢查您目前的版本,請使用
aws --version。如 yum、apt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI 落後數個版本之多。若要安裝最新版本,請參閱《AWS 命令列介面使用者指南》中的安裝或更新至最新版本的 AWS CLI 和設定 AWS CLI 的設定。 -
具有建立 IAM 角色和連接政策以及建立和描述 EKS 叢集之許可的 IAM 主體
考量事項
-
您的叢集必須使用
API或API_AND_CONFIG_MAP作為叢集身分驗證模式。 -
您的叢集必須使用 IPv4 位址系列。
-
您的叢集必須使用公有或私有叢集端點連線。您的叢集無法使用「公有和私有」叢集端點連線,因為 Amazon EKS Kubernetes API 伺服器端點會解析為在您的 VPC 外部執行的混合節點的公共 IP。
-
具有混合節點的 EKS 叢集支援 OIDC 身分驗證。
-
您可以新增、變更或移除現有叢集的混合節點組態。如需詳細資訊,請參閱 在現有的 Amazon EKS 叢集上啟用混合節點或修改組態。
步驟 1:建立叢集 IAM 角色
如果您已擁有叢集 IAM 角色,或者您要使用 eksctl 或 AWS CloudFormation 來建立叢集,則可以略過此步驟。根據預設,eksctl 和 AWS CloudFormation 範本會為您建立叢集 IAM 角色。
-
執行下列命令以建立 IAM 信任政策 JSON 檔案。
cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF -
建立 Amazon EKS 叢集 IAM 角色。如有必要,請在 eks-cluster-role-trust-policy.json 前面加上您在上一步中寫入檔案的電腦的路徑。命令會將您在上一步驟中建立的信任策略與角色相關聯。若要建立 IAM 角色,必須為建立角色的 IAM 主體指派以下
iam:CreateRole動作 (許可)。aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"eks-cluster-role-trust-policy.json" -
您可以指派 Amazon EKS 受管政策或建立自己的自訂政策。如需了解在自訂政策中必須使用的最低許可,請參閱 Amazon EKS 節點 IAM 角色。將名為
AmazonEKSClusterPolicy的 Amazon EKS 受管 IAM 政策連接到角色。若要將 IAM 政策連接至 IAM 主體,必須為連接政策的 IAM 實體指派以下 IAM 動作之一 (許可):iam:AttachUserPolicy或iam:AttachRolePolicy。aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name myAmazonEKSClusterRole
步驟 2:建立已啟用混合節點的叢集
您可以透過以下方式建立叢集:
建立已啟用混合節點的叢集 - eksctl
您需要安裝最新版本的 eksctl 命令列工具。如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的安裝
-
建立
cluster-config.yaml以定義已啟用混合節點的 Amazon EKS IPv4 叢集。請在您的cluster-config.yaml中執行下列取代。如需設定的完整清單,請參閱 eksctl 文件。 -
使用您的叢集名稱取代
CLUSTER_NAME。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭,且長度不可超過 100 個字元。在您要建立叢集的 AWS 區域和 AWS 帳戶中,該名稱必須是唯一的。 -
使用您要在其中建立叢集的 AWS 區域取代
AWS_REGION。 -
使用任何 Amazon EKS 支援的版本取代
K8S_VERSION。 -
使用
ssm或ira取代CREDS_PROVIDER,具體取決於您在 準備混合節點的憑證 步驟中設定的憑證提供者。 -
如果您的憑證提供者設定為
ira,且其使用 AWS IAM Roles Anywhere 作為憑證提供者,則取代CA_BUNDLE_CERT。CA_BUNDLE_CERT 是憑證認證機構 (CA) 憑證內文,取決於您選擇的 CA。憑證必須是隱私權增強式郵件 (PEM) 格式。 -
使用要連接到 VPC 的虛擬私有閘道或傳輸閘道的 ID 取代
GATEWAY_ID。 -
使用混合節點的內部部署節點 CIDR 取代
REMOTE_NODE_CIDRS。 -
對於在混合節點上執行的工作負載,使用內部部署 Pod CIDR 取代為
REMOTE_POD_CIDRS;或者如果您未在混合節點上執行 Webhook,則請從組態中移除該行。如果在 Pod 流量離開您的內部部署主機時,您的 CNI 未使用網路位址轉譯 (NAT) 或偽裝 Pod IP 位址,您必須設定您的REMOTE_POD_CIDRS。如果您在混合節點上執行 Webhook,您必須設定REMOTE_POD_CIDRS,如需詳細資訊,請參閱 設定混合節點的 Webhook。 -
您的內部部署節點和 Pod CIDR 區塊必須符合下列要求:
-
處於以下 IPv4 RFC-1918 範圍之一:
10.0.0.0/8、172.16.0.0/12或192.168.0.0/16。 -
您叢集的
VPC CIDR或您的 Kubernetes Service IPv4 CIDR 不會彼此重疊apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: CLUSTER_NAME region: AWS_REGION version: "K8S_VERSION" remoteNetworkConfig: iam: provider: CREDS_PROVIDER # default SSM, can also be set to IRA # caBundleCert: CA_BUNDLE_CERT vpcGatewayID: GATEWAY_ID remoteNodeNetworks: - cidrs: ["REMOTE_NODE_CIDRS"] remotePodNetworks: - cidrs: ["REMOTE_POD_CIDRS"]
-
-
-
執行以下命令:
eksctl create cluster -f cluster-config.yaml叢集佈建需要幾分鐘的時間。建立叢集時,會出現幾行輸出。輸出的最後一行類似於下面的範例行。
[✓] EKS cluster "CLUSTER_NAME" in "REGION" region is ready -
繼續進行 步驟 3:更新 kubeconfig。
建立已啟用混合節點的叢集 - AWS CloudFormation
CloudFormation 堆疊會使用您指定的 RemoteNodeNetwork 和 RemotePodNetwork 來建立 EKS 叢集 IAM 角色和 EKS 叢集。修改 CloudFormation 範本 如果您需要自訂 CloudFormation 範本中未公開的 EKS 叢集的設定。
-
下載 CloudFormation 範本。
curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-eks-cfn.yaml' -
建立
cfn-eks-parameters.json,並為每個值指定您的組態。-
CLUSTER_NAME:要建立的 EKS 叢集的名稱 -
CLUSTER_ROLE_NAME:要建立的 EKS 叢集 IAM 角色的名稱。範本中的預設值為 "EKSClusterRole"。 -
SUBNET1_ID:您在先決條件步驟中建立的第一個子網路的 ID -
SUBNET2_ID:您在先決條件步驟中建立的第二個子網路的 ID -
SG_ID:您在先決條件步驟中建立的安全群組 ID -
REMOTE_NODE_CIDRS:混合節點的內部部署節點 CIDR -
REMOTE_POD_CIDRS:在混合節點上執行的工作負載的內部部署 Pod CIDR。如果在 Pod 流量離開您的內部部署主機時,您的 CNI 未使用網路位址轉譯 (NAT) 或偽裝 Pod IP 位址,您必須設定您的REMOTE_POD_CIDRS。如果您在混合節點上執行 Webhook,您必須設定REMOTE_POD_CIDRS,如需詳細資訊,請參閱 設定混合節點的 Webhook。 -
您的內部部署節點和 Pod CIDR 區塊必須符合下列要求:
-
處於以下 IPv4 RFC-1918 範圍之一:
10.0.0.0/8、172.16.0.0/12或192.168.0.0/16。 -
您叢集的
VPC CIDR或您的 Kubernetes Service IPv4 CIDR 不會彼此重疊。
-
-
CLUSTER_AUTH:您的叢集的叢集身分驗證模式。有效值為API和API_AND_CONFIG_MAP。範本中的預設值為API_AND_CONFIG_MAP。 -
CLUSTER_ENDPOINT:您叢集的叢集端點連線。有效值為 "Public" 或 "Private"。範本中的預設值為私有,這表示您只能從 VPC 內連接至 Kubernetes API 端點。 -
K8S_VERSION:要用於您叢集的 Kubernetes 版本。請參閱 Amazon EKS 支援的版本。{ "Parameters": { "ClusterName": "CLUSTER_NAME", "ClusterRoleName": "CLUSTER_ROLE_NAME", "SubnetId1": "SUBNET1_ID", "SubnetId2": "SUBNET2_ID", "SecurityGroupId" "SG_ID", "RemoteNodeCIDR": "REMOTE_NODE_CIDRS", "RemotePodCIDR": "REMOTE_POD_CIDRS", "ClusterAuthMode": "CLUSTER_AUTH", "ClusterEndpointConnectivity": "CLUSTER_ENDPOINT", "K8sVersion": "K8S_VERSION" } }
-
-
部署 CloudFormation 堆疊。使用 CloudFormation 堆疊的名稱取代
STACK_NAME,並使用要建立叢集的 AWS 區域取代AWS_REGION。aws cloudformation deploy \ --stack-name STACK_NAME \ --region AWS_REGION \ --template-file hybrid-eks-cfn.yaml \ --parameter-overrides file://cfn-eks-parameters.json \ --capabilities CAPABILITY_NAMED_IAM叢集佈建需要幾分鐘的時間。您可以使用下列命令來檢查堆疊的狀態。使用 CloudFormation 堆疊的名稱取代
STACK_NAME,並使用要建立叢集的 AWS 區域取代AWS_REGION。aws cloudformation describe-stacks \ --stack-name STACK_NAME \ --region AWS_REGION \ --query 'Stacks[].StackStatus' -
繼續進行 步驟 3:更新 kubeconfig。
建立已啟用混合節點的叢集 - AWS CLI
-
執行下列命令以建立已啟用混合節點的 EKS 叢集和節點。執行命令之前,請使用您的設定取代下列內容。如需設定的完整清單,請參閱 建立 Amazon EKS 叢集 文件。
-
CLUSTER_NAME:要建立的 EKS 叢集的名稱 -
AWS_REGION:要建立叢集的 AWS 區域。 -
K8S_VERSION:要用於您叢集的 Kubernetes 版本。請參閱 Amazon EKS 支援的版本。 -
ROLE_ARN:您為叢集設定的 Amazon EKS 叢集角色。如需詳細資訊,請參閱 Amazon EKS 叢集 IAM 角色。 -
SUBNET1_ID:您在先決條件步驟中建立的第一個子網路的 ID -
SUBNET2_ID:您在先決條件步驟中建立的第二個子網路的 ID -
SG_ID:您在先決條件步驟中建立的安全群組 ID -
您可以使用
API和API_AND_CONFIG_MAP作為叢集存取身分驗證模式。在以下命令中,叢集存取身分驗證模式設定為API_AND_CONFIG_MAP。 -
您可以使用
endpointPublicAccess和endpointPrivateAccess參數來啟用或停用叢集的 Kubernetes API 伺服器端點的公有和私有存取。在以下命令中,endpointPublicAccess設定為 false,而endpointPrivateAccess設定為 true。 -
REMOTE_NODE_CIDRS:混合節點的內部部署節點 CIDR。 -
REMOTE_POD_CIDRS(選用):在混合節點上執行的工作負載的內部部署 Pod CIDR。 -
您的內部部署節點和 Pod CIDR 區塊必須符合下列要求:
-
處於以下 IPv4 RFC-1918 範圍之一:
10.0.0.0/8、172.16.0.0/12或192.168.0.0/16。 -
Amazon EKS 叢集的
VPC CIDR或您的 Kubernetes Service IPv4 CIDR 不會彼此重疊。aws eks create-cluster \ --name CLUSTER_NAME \ --region AWS_REGION \ --kubernetes-version K8S_VERSION \ --role-arn ROLE_ARN \ --resources-vpc-config subnetIds=SUBNET1_ID,SUBNET2_ID,securityGroupIds=SG_ID,endpointPrivateAccess=true,endpointPublicAccess=false \ --access-config authenticationMode=API_AND_CONFIG_MAP \ --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
-
-
-
佈建叢集需要幾分鐘才能完成。您可以使用下列命令來查詢叢集的狀態。使用您建立的叢集的名稱取代
CLUSTER_NAME,並使用要建立叢集的 AWS 區域取代AWS_REGION。在傳回的輸出為ACTIVE之前,請勿進行下一個步驟。aws eks describe-cluster \ --name CLUSTER_NAME \ --region AWS_REGION \ --query "cluster.status" -
繼續進行 步驟 3:更新 kubeconfig。
建立已啟用混合節點的叢集 - AWS 管理主控台
-
在 Amazon EKS 主控台
開啟 Amazon EKS 主控台。 -
選取 Add cluster (新增叢集),然後選取 Create (建立)。
-
在 Configure cluster (設定叢集) 頁面上,輸入下列欄位:
-
Name (名稱):叢集的名稱。名稱僅包含英數字元 (區分大小寫)、連字號和底線。必須以英數字元開頭,且長度不可超過 100 個字元。在您要建立叢集的 AWS 區域和 AWS 帳戶中,該名稱必須是唯一的。
-
叢集 IAM 角色:選擇您建立的 Amazon EKS 叢集 IAM 角色,以允許 Kubernetes 控制平面代表您來管理 AWS 資源。
-
Kubernetes version (Kubernetes 版本) – 您的叢集使用的 Kubernetes 版本。我們建議選取最新版本,除非您需要較早版本。
-
升級政策:選擇延長或標準。
-
延長:此選項會在 Kubernetes 版本發布日期後持續為其提供 26 個月的支援。延長支援期間產生額外的每小時成本,該成本會從標準支援期間結束後開始計費。延長支援結束時,您的叢集將會自動升級至下一個版本。
-
延伸:此選項會在 Kubernetes 版本發布日期後持續為其提供 14 個月的支援。無需額外付費。標準支援結束時,您的叢集將會自動升級至下一個版本。
-
-
叢集存取 - 選擇允許或不允許叢集管理員存取,然後選取身分驗證模式。已啟用混合節點的叢集支援下列身分驗證模式。
-
EKS API:叢集將僅從 EKS 存取項目 API 取得已經過身分驗證的 IAM 主體。
-
EKS API 和 ConfigMap:叢集將從 EKS 存取項目 API 和
aws-authConfigMap 取得已經過身分驗證的 IAM 主體。
-
-
Secrets encryption (秘密加密):(選用) 選擇使用 KMS 金鑰啟用 Kubernetes 秘密的秘密加密。您也可以在建立叢集後啟用此功能。啟用此功能之前,請確定您已熟悉 在現有叢集上使用 KMS 加密 Kubernetes 秘密 中的資訊。
-
ARC 區域轉移:如果啟用,EKS 將向 ARC 區域轉移註冊您的叢集,以讓您能夠使用區域轉移將應用程式流量從可用區域轉移。
-
Tags (標籤) – (選用) 將任何標籤新增到您的叢集。如需詳細資訊,請參閱 使用標籤組織 Amazon EKS 資源。
-
完成此頁面後,請選擇下一步。
-
-
在 Specify networking (指定網路) 頁面上,選取下列欄位的值:
-
VPC:選擇符合 檢視 VPC 和子網路的 Amazon EKS 聯網需求 和 Amazon EKS 混合節點要求 的現有 VPC。選擇 VPC 之前,建議您先熟悉檢視 VPC、子網路和混合節點的 Amazon EKS 聯網需求中的所有要求和考量事項。建立叢集後,您無法變更要使用的 VPC。如果沒有列出 VPC,則您需要先建立一個。如需詳細資訊,請參閱 為您的 Amazon EKS 叢集建立 Amazon VPC 和 Amazon EKS 混合節點聯網需求。
-
Subnets (子網路):根據預設,前一個欄位指定的 VPC 中的所有可用子網路會預先選取。您必須選取至少兩個。
-
安全群組:(選用) 指定一或多個您希望 Amazon EKS 與其建立的網路介面相關聯的安全群組。您指定的安全群組中至少有一個必須具有適用於內部部署節點和 (選用) Pod CIDR 的傳入規則。如需詳細資訊,請參閱 Amazon EKS 混合節點聯網需求。無論您是否選擇任何安全群組,Amazon EKS 都會建立一個安全群組,以支援您的叢集和 VPC 之間的通訊。Amazon EKS 將此安全群組及您選擇的任何群組與其建立的網路介面相關聯。如需有關 Amazon EKS 建立的叢集安全群組的詳細資訊,請參閱 檢視叢集的 Amazon EKS 安全群組要求 您可以修改 Amazon EKS 建立的叢集安全群組中的規則。
-
選擇叢集 IP 位址系列:您必須為已啟用混合節點的叢集選擇 IPv4。
-
(選用) 選擇設定 Kubernetes 服務 IP 位址範圍,並指定服務 IPv4 範圍。
-
選擇設定遠端網路以啟用混合節點,然後為混合節點指定您的內部部署節點和 Pod CIDR。
-
如果在 Pod 流量離開您的內部部署主機時,您的 CNI 未使用網路位址轉譯 (NAT) 或偽裝 Pod IP 位址,您必須設定您的遠端 Pod CIDR。如果您在混合節點上執行 Webhook,則必須設定遠端 Pod CIDR。
-
您的內部部署節點和 Pod CIDR 區塊必須符合下列要求:
-
處於以下 IPv4 RFC-1918 範圍之一:
10.0.0.0/8、172.16.0.0/12或192.168.0.0/16。 -
您叢集的
VPC CIDR或您的 Kubernetes Service IPv4 CIDR 不會彼此重疊
-
-
針對 Cluster endpoint access (叢集端點存取),選取一個選項。建立叢集後,您可以變更此選項。對於已啟用混合節點的叢集,您必須選擇公有或私有。在選取非預設選項之前,請務必熟悉這些選項及其含義。如需詳細資訊,請參閱 叢集 API 伺服器端點。
-
完成此頁面後,請選擇下一步。
-
-
(選用) 在設定可觀測性頁面上,選擇要開啟的指標和控制平面記錄選項。根據預設,系統會關閉每個日誌類型。
-
如需有關 Prometheus 指標選項的詳細資訊,請參閱 藉助 Prometheus 監控叢集指標。
-
如需 EKS 控制記錄選項的詳細資訊,請參閱 將控制平面日誌傳送至 CloudWatch Logs。
-
完成此頁面後,請選擇下一步。
-
-
在 Select add-ons (選取附加元件) 頁面上,選擇您要新增至叢集的附加元件。
-
您可以根據需要選擇任意多個 Amazon EKS 附加元件和 AWS Marketplace 附加元件。與混合節點不相容的 Amazon EKS 附加元件會標記為「與混合節點不相容」,並且附加元件具有反親和性規則,可防止其在混合節點上執行。如需詳細資訊,請參閱設定混合節點的附加元件。如果未列出您要安裝的 AWS Marketplace 附加元件,則可以在搜尋方框中輸入文字來搜尋可用的 AWS Marketplace 附加元件。您也可以依 category (類別)、vendor (廠商) 或 pricing model (定價模式) 進行搜尋,然後從搜尋結果中選擇附加元件。
-
一些附加元件,例如 CoreDNS 和 kube-proxy,是預設安裝的。如果停用任何預設附加元件,可能會影響您執行 Kubernetes 應用程式的能力。
-
完成此頁面後,請選擇
Next。
-
-
在設定選取的附加元件設定頁面上,選取您要安裝的版本。
-
建立叢集後,您隨時皆可更新至更新版本。您可以在建立叢集後更新每個附加元件的組態。如需有關設定附加元件的詳細資訊,請參閱更新 Amazon EKS 附加元件。如需與混合節點相容的附加元件版本,請參閱 設定混合節點的附加元件。
-
完成此頁面後,請選擇下一步。
-
-
在 Review and create (檢閱並建立) 頁面上,檢閱您在先前頁面上輸入或選取的資訊。如需變更,請選擇 Edit (編輯)。當您感到滿意時,請選擇建立。在佈建叢集時,Status (狀態) 欄位顯示 CREATING (正在建立)。叢集佈建需要幾分鐘的時間。
-
繼續進行 步驟 3:更新 kubeconfig。
步驟 3:更新 kubeconfig
如果您使用 eksctl 建立叢集,則可以略過此步驟。這是因為 eksctl 已為您完成此步驟。透過向 kubectl 組態檔案新增內容,使 kubectl 能夠與您的叢集通訊。如需建立和更新檔案的詳細資訊,請參閱 透過建立 kubeconfig 檔案將 kubectl 連線至 EKS 叢集。
aws eks update-kubeconfig --name CLUSTER_NAME --region AWS_REGION
範例輸出如下。
Added new context arn:aws:eks:AWS_REGION:111122223333:cluster/CLUSTER_NAME to /home/username/.kube/config
透過執行以下命令確認與叢集的通訊。
kubectl get svc
範例輸出如下。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
步驟 4:叢集設定
下一步,請參閱 準備混合節點的叢集存取,以啟用對混合節點的存取,進而加入叢集。