協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS Outpost 上建立 Amazon Linux 節點
重要
Outposts 上的 Amazon EKS 本機叢集僅支援從下列 Amazon EKS 最佳化 Amazon Linux 2023 AMIs 建立的節點:
-
標準 Amazon Linux 2023 (
amazon-linux-2023/x86_64/standard) -
加速 Nvidia Amazon Linux 2023 (
amazon-linux-2023/x86_64/nvidia) -
加速 Neuron Amazon Linux 2023 (
amazon-linux-2023/x86_64/neuron)
AWS 已於 2025 年 11 月 26 日終止對 EKS AL2-optimized和 AL2-accelerated AMIs 的支援。雖然您可以在終止支援 (EOS) 日期 (2025 年 11 月 26 日) 之後繼續使用 EKS AL2 AMI,但 EKS 將不再發布任何新的 Kubernetes 版本或對 AL2 AMI 的更新,包括此日期之後的次要版本、修補程式和錯誤修正。如需 AL2 棄用的詳細資訊,請參閱此處。
本主題會說明如何啟動 Outpost 上已向 Amazon EKS 叢集註冊的 Amazon Linux 節點的 Auto Scaling 群組。叢集可以在 AWS 雲端或 Outpost 上。
-
現有的 Outpost。如需詳細資訊,請參閱什麼是 AWS Outpost。
-
現有 Amazon EKS 叢集。若要在 AWS 雲端部署叢集,請參閱 建立 Amazon EKS 叢集。若要在 Outpost 上部署叢集,請參閱建立 AWS Outposts 上的本機 Amazon EKS 叢集,以實現高可用性。
-
假設您正在 AWS 雲端的叢集中建立節點,並在已啟用 AWS Outposts、 AWS Wavelength 或 AWS Local Zones 的 AWS 區域中擁有子網路。然後,在您建立叢集時,不得傳入這些子網路。如果您要在 Outpost 上的叢集中建立節點,則必須在建立叢集時便已傳入 Outpost 子網路。
-
(建議用於 AWS 雲端上的叢集) 適用於 Kubernetes 附加元件的 Amazon VPC CNI 外掛程式,其設定為具有連接必要 IAM 政策的自有 IAM 角色。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。本機叢集不支援服務帳戶的 IAM 角色。
您可以使用 eksctl或 AWS 管理主控台 (使用 AWS CloudFormation 範本) 建立自我管理的 Amazon Linux 節點群組。您也可使用 Terraform。
您可以使用此頁面中所述的下列工具,為本機叢集建立自我管理節點群組:
重要
-
自我管理節點群組包含您帳戶的 Amazon EC2 執行個體。當您或 Amazon EKS 代您更新控制平面版本時,這些執行個體不會自動升級。自我管理節點群組在主控台中沒有任何需要更新的指示。您可以檢視安裝在節點上的
kubelet版本,方法是選取您叢集的 Overview (概觀) 標籤上的 Nodes (節點) 清單上的節點,以判斷哪些節點需要更新。您必須手動更新節點。如需詳細資訊,請參閱更新您的叢集的自我管理節點。 -
您自我管理節點上的 kubelet 使用的憑證已核發,一年過期。預設不會啟用憑證輪換 (請參閱:https://https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration),這表示如果您的自我管理節點執行超過一年,就無法再向 Kubernetes API 進行身分驗證。
-
基於最佳實務,建議客戶定期更新其自我管理節點群組,以從最新的 Amazon EKS 最佳化 AMI 接收 CVE 和安全性修補程式。更新自我管理節點群組中使用的 AMI 也會觸發節點的重新建立,並確保它們不會因為過期的 kubelet 憑證而發生問題。
-
或者,您也可以在建立自我管理節點群組時啟用用戶端憑證輪換 (請參閱:https://kubernetes.io/docs/tasks/tls/certificate-rotation/),以確保在 kubelet 憑證在目前的憑證即將過期時及時更新。
eksctl
使用 eksctl 啟動自我管理的 Linux 節點
-
在您的裝置或 AWS CloudShell 上安裝版本
0.215.0或更新版本的eksctl命令列工具。如需有關安裝或更新eksctl的指示,請參閱eksctl文件中的安裝一節。 -
如果您的叢集位於 AWS 雲端,且 AmazonEKS_CNI_Policy 受管 IAM 政策已連接至您的 Amazon EKS 節點 IAM 角色,建議您改為將其指派給與 Kubernetes
aws-node服務帳戶相關聯的 IAM 角色。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。若您的叢集位於 Outpost 上,則政策必須連接至您的節點角色。 -
以下命令會在現有的叢集建立節點群組。叢集必須使用
eksctl來建立。將al-nodes取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。使用您叢集的名稱取代my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭,且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。若您的叢集存在於 Outpost 上,請使用 Outpost 子網路的 ID 來取代id。如果您的叢集存在於 AWS 雲端上,請將ID取代為您建立叢集時未指定的子網路 ID。使用您自己的值取代其餘範例值。依預設,系統會使用與控制平面相同的 Kubernetes 版本來建立節點。使用您 Outpost 上可用的執行個體類型來取代
instance-type。使用 Amazon EC2 金鑰對或公有金鑰的名稱取代
my-key。此金鑰會在節點啟動後用於將 SSH 套用至節點。如果您還沒有 Amazon EC2 金鑰對,可以在 AWS 管理主控台中建立一個。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對。使用下列命令來建立您的節點群組。
eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \ --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false \ --node-volume-type gp2 --subnet-ids subnet-id \ --node-ami-family AmazonLinux2023如果您的叢集部署在 AWS 雲端:
-
您部署的節點群組可以從與執行個體不同的 CIDR 區塊將
IPv4地址指派給 Pod。如需詳細資訊,請參閱使用自訂聯網在替代子網路中部署 Pod。 -
您部署的節點群組不需要傳出網際網路存取。如需詳細資訊,請參閱部署網際網路存取受到限制的私有叢集。
如需所有可用選項和預設值的完整清單,請參閱
eksctl文件中的 AWS Outposts 支援。 -
如果節點無法加入叢集,請參閱節點無法加入叢集針對 Amazon EKS 叢集和節點問題進行故障診斷無法將節點加入叢集,以及針對 AWS Outposts 上的本機 Amazon EKS 叢集進行故障診斷。
-
範例輸出如下。建立節點時,會有數行輸出。輸出的最後幾行之一類似於以下的範例行。
[✔] created 1 nodegroup(s) in cluster "my-cluster"
-
-
(選用) 部署範例應用程式以測試您的叢集和 Linux 節點。
AWS 管理主控台
步驟 1:使用 AWS 管理主控台 啟動自我管理的 Linux 節點
-
下載最新版本的 AWS CloudFormation 範本。
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-24/amazon-eks-outpost-nodegroup.yaml -
選擇 Create stack (建立堆疊),然後選取 With new resources (standard) (使用新資源 (標準))。
-
針對 Specify template (指定範本),選取 Upload a template file (上傳範本檔案),然後選取 Choose file (選擇檔案)。選取在上一步驟中下載的
amazon-eks-nodegroup.yaml檔案,然後選取 Next (下一步)。 -
在 Specify stack details (指定堆疊詳細資訊) 頁面上,據此填寫下列參數,然後選擇 Next (下一步):
-
堆疊名稱:為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如,您可以稱它為
al-nodes。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭,且長度不可超過 100 個字元。名稱在您要建立叢集 AWS 的區域和 AWS 帳戶中必須是唯一的。 -
ApiServerEndpoint:輸入 Kubernetes API 伺服器端點,在 EKS 主控台中或透過 DescribeCluster API 顯示。
-
ClusterName:請輸入您叢集的名稱。若此名稱與您叢集的名稱不相符,則您的節點便無法加入叢集。
-
ClusterId:輸入由 EKS 服務指派給叢集的 ID。透過 DescribeCluster API 可見。如果此 ID 與您的叢集 ID 不符,您的節點將無法加入叢集。
-
CertificateAuthority:輸入 Kubernetes Certificate Authority 的 base64 編碼字串。在 EKS 主控台中或透過 DescribeCluster API 顯示。
-
ServiceCidr:輸入 Kubernetes Services CIDR。在 EKS 主控台中或透過 DescribeCluster API 顯示。
-
ClusterControlPlaneSecurityGroup:從您在建立 VPC 時產生的 AWS CloudFormation 輸出中選擇 SecurityGroups 值。
下列步驟顯示擷取適用群組的一種操作。
-
開啟 Amazon EKS 主控台
。 -
選擇叢集的名稱。
-
選擇 Networking (網路) 索引標籤。
-
從 ClusterControlPlaneSecurityGroup 下拉式清單中選取時,請使用 Additional Security Group (其他安全群組) 值作為參考。
-
-
NodeGroupName:輸入節點群組的名稱。此名稱稍後可用於識別為您節點建立的 Auto Scaling 節點群組。
-
NodeAutoScalingGroupMinSize:輸入節點 Auto Scaling 群組可以縮減的最低節點數。
-
NodeAutoScalingGroupDesiredCapacity:堆疊建立時,輸入欲擴展的所需節點數量。
-
NodeAutoScalingGroupMaxSize:輸入節點 Auto Scaling 群組可以擴增的最大節點數。
-
NodeInstanceType:選擇節點的執行個體類型。如果您的叢集在 AWS 雲端上執行,如需詳細資訊,請參閱 選擇最佳的 Amazon EC2 節點執行個體類型。若您的叢集正於 Outpost 上執行,則您僅可選取 Outpost 上可用的執行個體類型。
-
NodeImageIdSSMParam:為變數 Kubernetes 版本預先填入了最近 Amazon EKS 最佳化 AMI 的 Amazon EC2 Systems Manager 參數。若要使用 Amazon EKS 支援不同的 Kubernetes 次要版本,請將
1.XX取代為不同的支援的版本。建議指定與叢集相同的 Kubernetes 版本。若要使用 Amazon EKS 最佳化加速 AMI,請將
NodeImageIdSSMParam值更新為所需的 SSM 參數。在此處了解如何從 SSM 擷取 EKS AMI IDshttps://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html。注意
Amazon EKS 節點 AMI 以 Amazon Linux 為基礎。您可以透過選擇所需版本的標籤,在 Amazon Linux 安全中心
追蹤 Amazon Linux 的安全或隱私權事件。您也可以訂閱適用的 RSS 摘要。安全與隱私權事件包含問題的概觀、哪些套件受到影響,以及如何更新您的執行個體以修正問題。 -
NodeImageId:(選用) 如果您使用自己的自訂 AMI (而非 Amazon EKS 最佳化 AMI),請輸入您 AWS 區域的節點 AMI ID。如果您在此指定值,則會覆寫 NodeImageIdSSMParam 欄位中的任何值。
-
NodeVolumeSize:為您的節點指定根磁碟區大小 (以 GiB 為單位)。
-
NodeVolumeType:為您的節點指定根磁碟區類型。
-
KeyName:輸入 Amazon EC2 SSH 金鑰對的名稱,您可以在節點啟動後使用該金鑰對來透過 SSH 連接至節點。如果您還沒有 Amazon EC2 金鑰對,可以在 AWS 管理主控台中建立一個。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對。
注意
如果您未在此處提供金鑰對, AWS CloudFormation 堆疊建立會失敗。
-
DisableIMDSv1:預設情況下,每個節點都支援執行個體中繼資料服務版本 1 (IMDSv1) 和 IMDSv2。您可以停用 IMDSv1。若要防止節點群組中的未來節點和 Pod 使用 IMDSv1,請將 DisableIMDSv1 設定為 true。如需 IMDS 的詳細資訊,請參閱設定執行個體中繼資料服務。如需在節點上限制存取的詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -
VpcId:輸入您建立的 VPC ID。在選擇子網路之前,請先檢閱 VPC 要求和考量事項。
-
子網路:如果叢集位於 Outpost 上,則請至少在 VPC 中選擇一個私有子網路。在選擇子網路之前,請先檢閱子網路需求和注意事項。您可以看到哪些子網是私有子網,方法是從叢集的 Networking (聯網) 標籤打開每一個子網連結。
-
-
請在 Configure stack options (設定堆疊選項) 頁面上選取所需的選項,然後選擇 Next (下一頁)。
-
選取我確認 AWS CloudFormation 可能會建立 IAM 資源的左側核取方塊,然後選擇建立堆疊。
-
當當堆疊已完成建立時,從主控台將其選取,然後選擇 Outputs (輸出)。
-
為已建立的節點群組記錄 NodeInstanceRole。當您設定 Amazon EKS 節點時會需要此值。
步驟 2:讓節點加入叢集
-
檢查以瞭解是否有
aws-authConfigMap。kubectl describe configmap -n kube-system aws-auth -
如果您看到
aws-authConfigMap,請視需要更新之。-
開啟
ConfigMap進行編輯。kubectl edit -n kube-system configmap/aws-auth -
視需要新增
mapRoles個項目。將rolearn值設定為您在先前程序中記錄的 NodeInstanceRole 值。[...] data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes [...] -
儲存檔案並結束您的文字編輯器。
-
-
如果您收到一個錯誤,說明 "
Error from server (NotFound): configmaps "aws-auth" not found,那麼請套用股票ConfigMap。-
下載組態對應。
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml -
在
aws-auth-cm.yaml檔案中,將rolearn設定為您在先前程序中紀錄的 NodeInstanceRole 值。您可以使用文字編輯器來完成此操作,或者透過取代my-node-instance-role並執行下列命令:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml -
套用組態。此命令可能需要幾分鐘的時間來完成。
kubectl apply -f aws-auth-cm.yaml
-
-
查看節點的狀態,並等待他們到達
Ready狀態。kubectl get nodes --watch輸入
Ctrl+C傳回 Shell 提示。注意
如果您收到任何授權或資源類型錯誤,請參閱故障診斷主題中的未經授權或存取遭拒 (kubectl)。
如果節點無法加入叢集,請參閱節點無法加入叢集針對 Amazon EKS 叢集和節點問題進行故障診斷無法將節點加入叢集,以及針對 AWS Outposts 上的本機 Amazon EKS 叢集進行故障診斷。
-
安裝 Amazon EBS CSI 驅動程式。如需詳細資訊,請參閱 GitHub 上的 Installation
(安裝)。在 Set up driver permission (設定驅動程式權限) 區段中,請務必依照 Using IAM instance profile (使用 IAM 執行個體設定檔) 選項指示操作。您必須使用 gp2儲存類別。不支援gp3儲存類別。若要在叢集上建立
gp2儲存類別,請完成以下步驟。-
執行下列命令以建立
gp2-storage-class.yaml檔案。cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF -
將清單檔案套用至叢集。
kubectl apply -f gp2-storage-class.yaml
-
-
(僅限 GPU 節點) 若您選擇了 GPU 執行個體類型和 Amazon EKS 最佳化加速 AMI,則必須套用 Kubernetes 專用 NVIDIA 裝置外掛程式
作為叢集上的 DaemonSet。請先以您想要的 NVIDIA/k8s-device-plugin 版本來取代 vX.X.X,然後再執行下列命令。kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
步驟 3:其他動作
-
(選用) 部署範例應用程式以測試您的叢集和 Linux 節點。
-
若您的叢集部署在 Outpost 上,請跳過此步驟。如果您的叢集部署在 AWS 雲端上,則下列資訊為選用。如果 AmazonEKS_CNI_Policy 受管 IAM 政策已連接至您的 Amazon EKS 節點 IAM 角色,建議您改為將其指派給您與 Kubernetes
aws-node服務帳戶相關聯的 IAM 角色。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。