為您的叢集建立受管節點群組 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。

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

為您的叢集建立受管節點群組

本主題說明如何啟動向 Amazon EKS叢集註冊的節點的 Amazon EKS受管節點群組。節點加入叢集後,您可以部署 Kubernetes 應用程式。

如果這是您第一次啟動 Amazon EKS受管節點群組,建議您改為遵循我們的其中一個開始使用 Amazon EKS指南。本指南提供使用節點建立 Amazon EKS叢集的逐步解說。

重要
必要條件

您可以使用 eksctl 或 AWS Management Console建立受管節點群組。

eksctl
使用 eksctl 建立受管節點群組

此程序需要 eksctl 版本 0.191.0 或更新版本。您可使用以下命令檢查您的版本:

eksctl version

如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的 Installation 一節。

  1. (選用) 如果 Amazon EKS_CNI_Policy 受管IAM政策已連接至您的 Amazon EKS 節點 IAM 角色,建議您將其指派給與 相關聯的IAM角色 Kubernetes aws-node 服務帳戶。如需詳細資訊,請參閱設定要使用的 Amazon VPC CNI 外掛程式 IRSA

  2. 使用或不使用自訂啟動範本來建立受管節點群組。手動指定啟動範本可讓您更靈活地自訂節點群組。例如,它可以允許在 Amazon EKS最佳化 中部署自訂AMI或提供 引數至boostrap.sh指令碼AMI。如需每個可用選項和預設值的完整清單,請輸入以下命令。

    eksctl create nodegroup --help

    在以下命令中,將 my-cluster 取代為您的叢集名稱,並將 my-mng 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。

    重要

    如果在第一次建立受管的節點群組時未使用自訂啟動範本,請勿在之後針對節點群組使用自訂啟動範本。如果沒有指定自訂啟動範本,系統會自動產生啟動範本 (不建議手動修改該範本)。手動修改此自動產生的啟動範本可能會導致錯誤。

    沒有啟動範本

    eksctl 會在您的帳戶中建立預設的 Amazon EC2啟動範本,並使用其根據您指定的選項建立的啟動範本來部署節點群組。指定 --node-type 的值之前,請參閱 選擇最佳的 Amazon EC2節點執行個體類型

    使用允許的關鍵字取代 ami-family。如需詳細資訊,請參閱 eksctl 文件中的設定節點AMI系列my-key 將 取代為 Amazon EC2金鑰對或公有金鑰的名稱。此金鑰用於啟動SSH節點之後進入節點。

    注意

    用於 Windows,此命令不會啟用 SSH。反之,它會將您的 Amazon EC2金鑰對與執行個體建立關聯,並允許您與執行個體RDP建立關聯。

    如果您還沒有 Amazon EC2金鑰對,您可以在 中建立金鑰對 AWS Management Console。用於 Linux 資訊,請參閱 Amazon EC2金鑰對和 LinuxAmazon EC2使用者指南 中的 執行個體。用於 Windows 資訊,請參閱 Amazon EC2金鑰對和 WindowsAmazon EC2使用者指南 中的 執行個體

    我們建議封鎖 Pod IMDS 如果下列條件為 true,則存取 :

    • 您計劃將IAM角色指派給所有 Kubernetes 服務帳戶,以便 Pods 僅具有他們所需的最低許可。

    • 否 Pods 基於其他原因需要存取 Amazon EC2執行個體中繼資料服務 (IMDS),例如擷取目前的 AWS 區域。

    如需詳細資訊,請參閱‬限制存取指派給工作節點的執行個體設定檔‭

    如果您想要封鎖 Pod 存取 IMDS,然後將 --disable-pod-imds選項新增至下列命令。

    eksctl create nodegroup \ --cluster my-cluster \ --region region-code \ --name my-mng \ --node-ami-family ami-family \ --node-type m5.large \ --nodes 3 \ --nodes-min 2 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key my-key

    您的執行個體可以選擇性地將大量 IP 地址指派給 Pods,將 IP 地址指派給 Pods 從與執行個體 不同的CIDR區塊,並部署到沒有網際網路存取權的叢集。如需詳細資訊,請參閱 為具有前置字元的 Amazon EKS 節點指派更多 IP 地址pods在具有自訂網路的替代子網路中部署部署網際網路存取受限的私有叢集 以取得要新增至之前命令的其他選項。

    受管節點群組會計算並套用單一值,以達到最大數量 Pods 根據執行個體類型,可在節點群組的每個節點上執行。如果您建立具有不同執行個體類型的節點群組,則在所有執行個體類型中計算的最小值會套用為最大數量的 Pods 可在節點群組中的每個執行個體類型上執行。受管節點群組會使用 Amazon EKS建議上限 Pods 適用於每個 Amazon EC2執行個體類型 中參考的指令碼來計算數值。

    搭配啟動範本

    啟動範本必須已經存在,且必須符合 啟動範本組態基礎知識 中指定的要求。

    我們建議封鎖 Pod IMDS 如果下列條件為 true,則存取 :

    • 您計劃將IAM角色指派給所有 Kubernetes 服務帳戶,以便 Pods 僅具有他們所需的最低許可。

    • 否 Pods 基於其他原因需要存取 Amazon EC2執行個體中繼資料服務 (IMDS),例如擷取目前的 AWS 區域。

    如需詳細資訊,請參閱‬限制存取指派給工作節點的執行個體設定檔‭

    如果您想要封鎖 Pod 存取 IMDS,然後在啟動範本中指定必要的設定。

    1. 將以下內容複製到您的裝置。取代 example values,然後執行修改後的命令來建立 eks-nodegroup.yaml 檔案。在不使用啟動範本的情況下部署時指定的數個設定會移至啟動範本。如果您未指定 version,即使用範本的預設版本。

      cat >eks-nodegroup.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code managedNodeGroups: - name: my-mng launchTemplate: id: lt-id version: "1" EOF

      如需 eksctl 組態檔案設定的完整清單,請參閱 eksctl 文件中的組態檔案結構描述。您的執行個體可以選擇性地將大量 IP 地址指派給 Pods,將 IP 地址指派給 Pods 從與執行個體不同的CIDR區塊,使用containerd執行期,並部署到沒有傳出網際網路存取權的叢集。如需詳細資訊,請參閱適用於新增至組態檔案之其他選項的 為具有前置字元的 Amazon EKS 節點指派更多 IP 地址pods在具有自訂網路的替代子網路中部署測試 Amazon Linux 2 從遷移Docker到 containerd部署網際網路存取受限的私有叢集

      如果您未在啟動範本中指定 AMI ID,受管節點群組會計算並套用單一值,以達到最大數量的 Pods 根據執行個體類型,可在節點群組的每個節點上執行。如果您建立具有不同執行個體類型的節點群組,則在所有執行個體類型中計算的最小值會套用為最大數量的 Pods 可在節點群組中的每個執行個體類型上執行。受管節點群組會使用 Amazon EKS建議上限 Pods 適用於每個 Amazon EC2執行個體類型 中參考的指令碼來計算數值。

      如果您在啟動範本中指定了 AMI ID,請指定 Pods 如果您使用自訂聯網,或想要增加指派給執行個體 的 IP 地址數量,則可以在節點群組的每個節點上執行。如需詳細資訊,請參閱Amazon EKS建議上限 Pods 適用於每個 Amazon EC2執行個體類型

    2. 使用下列命令部署節點群組。

      eksctl create nodegroup --config-file eks-nodegroup.yaml
AWS Management Console
使用 建立受管節點群組 AWS Management Console
  1. 等待您的叢集狀態顯示為 ACTIVE。您無法針對尚未進入 ACTIVE 狀態的叢集建立受管節點群組。

  2. 開啟位於 https://console.aws.amazon.com/eks/home#/clusters 的 Amazon EKS主控台。

  3. 選擇要在其中建立受管節點群組的叢集名稱。

  4. 選取 Compute (運算) 標籤。

  5. 選擇 Add node group (新增節點群組)。

  6. Configure node group (配置節點群組) 頁面上,相應地填寫參數,然後選擇 Next (下一步)

    • Name (名稱) – 輸入受管節點群組的唯一名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。

    • 節點IAM角色 – 選擇節點執行個體角色以搭配節點群組使用。如需詳細資訊,請參閱Amazon EKS 節點 IAM 角色

      重要
      • 您無法使用用於建立任何叢集的相同角色。

      • 建議使用尚未被任何自我管理節點群組使用的角色。否則,您要計劃與新的自我管理節點組一起使用。如需詳細資訊,請參閱從叢集中刪除受管理的節點群組

    • Use launch template (使用啟動範本):(選用) 選擇是否要使用現有的啟動範本。選取啟動範本名稱。然後,選取 Launch template version (啟動範本版本)。如果您未選取版本,則 Amazon EKS會使用範本的預設版本。啟動範本可讓您自訂節點群組,例如允許您部署自訂 AMI、將顯著較多的 IP 地址指派給 Pods,將 IP 地址指派給 Pods 從與執行個體不同的CIDR區塊,啟用執行個體的containerd執行期,並將節點部署到沒有傳出網際網路存取權的叢集。如需詳細資訊,請參閱 為具有前置字元的 Amazon EKS 節點指派更多 IP 地址pods在具有自訂網路的替代子網路中部署測試 Amazon Linux 2 從遷移Docker到 containerd部署網際網路存取受限的私有叢集

      啟動範本必須符合 使用啟動範本自訂受管節點 要求。如果您不使用自己的啟動範本,Amazon 會在您的帳戶中EKSAPI建立預設的 Amazon EC2啟動範本,並使用預設啟動範本部署節點群組。

      如果您IAM為服務帳戶 實作角色,請直接將必要的許可指派給每個 Pod 需要存取 AWS 服務,而且沒有 Pods 基於IMDS其他原因需要存取 ,例如擷取目前的 AWS 區域,您也可以針對 停用對 IMDS的存取 Pods 在啟動範本中不使用主機聯網。如需詳細資訊,請參閱‬限制存取指派給工作節點的執行個體設定檔‭

    • Kubernetes 標籤 – (選用) 您可以選擇套用 Kubernetes 標籤到受管節點群組中的節點。

    • Kubernetes 污點 – (選用) 您可以選擇套用 Kubernetes 受管節點群組中節點的污點。Effect (效果) 功能表中的可用選項是 NoScheduleNoExecutePreferNoSchedule。如需詳細資訊,請參閱防Pods止在特定節點上排程

    • 標籤 – (選用) 您可以選擇標記 Amazon EKS受管節點群組。這些標籤不會傳播到節點群組中的其他資源,例如 Auto Scaling 群組或執行個體。如需詳細資訊,請參閱使用標籤整理 Amazon EKS 資源

  7. Set compute and scaling configuration (設定運算和擴展組態) 頁面上,相應地填寫參數,然後選擇 Next (下一步)。

    • AMI 類型 – 選取AMI類型。如果您在部署 Arm 執行個體,請務必在部署前檢閱 Amazon EKS最佳化 Arm Amazon Linux AMIs 中的考量事項。

      如果您在上一頁指定了啟動範本,並在啟動範本AMI中指定了 ,則無法選取值。系統會顯示範本中的值。範本中AMI指定的 必須符合 中的要求指定 AMI

    • Capacity type (容量類型) – 選取容量類型。如需選擇容量類型的詳細資訊,請參閱 受管節點群組容量類型。您無法在同一節點群組中混合使用不同的容量類型。如果要同時使用這兩種容量類型,請建立個別的節點群組,每個群組都有自己的容量和執行個體類型。

    • Instance types (執行個體類型):依預設會指定一或多個執行個體類型。若要移除預設執行個體類型,請選取執行個體類型的右側的 X。選擇要在受管節點群組中使用的執行個體類型。如需詳細資訊,請參閱 選擇最佳的 Amazon EC2節點執行個體類型

      主控台會顯示一組常用的執行個體類型。如果您需要使用未顯示的執行個體類型建立受管節點群組,請使用 eksctl、 AWS CloudFormation、 AWS CLI或 SDK來建立節點群組。如果您在上一頁指定了啟動範本,則無法選取值,因為必須在啟動範本中指定執行個體類型。系統會顯示啟動範本中的值。如果為 Capacity type (容量類型) 選取了 Spot,則建議您指定多個執行個體類型以增強可用性。

    • Disk size (磁碟大小) – 輸入要用於節點根磁碟區的磁碟大小 (以 GiB 為單位)。

      如果您在上一頁指定了啟動範本,則無法選取值,因為必須在啟動範本中指定該值。

    • Desired size (所需大小) – 指定受管節點群組目前在啟動時應該維護的節點數量。

      注意

      Amazon EKS不會自動擴展您的節點群組。不過,您可以設定 Kubernetes Cluster Autoscaler 為您執行此操作。

    • Minimum size (大小下限) – 指定受管節點群組可縮減至的節點數量下限。

    • Maximum size (大小上限):指定受管節點群組可擴增至的節點數量上限。

    • Node group update configuration (節點群組更新組態) – (選用) 您可以選取要平行更新的節點數量或百分比。這些節點在更新期間將無法使用。對於 Maximum unavailable (無法使用的上限),選取下列其中一個選項,然後指定 Value (值):

      • Number (數量):選取並指定可平行更新節點群組的節點數量。

      • Percentage (百分比):選取並指定可平行更新節點群組的節點百分比。如果您的節點群組中有大量節點,這會很有用。

  8. Specify networking (指定聯網) 頁面上,據此填寫參數,然後選擇 Next (下一步)。

    • Subnets (子網路):選擇要將受管節點啟動至其中的子網路。

      重要

      如果您正在多個可用區域中執行具狀態的應用程式,這些可用區域由 Amazon EBS磁碟區支援,並使用 Kubernetes 使用Karpenter和擴展叢集運算 Cluster Autoscaler,您應該設定多個節點群組,每個群組都範圍為單一可用區域。另外,您應該啟用 --balance-similar-node-groups 功能。

      重要
      • 如果您選擇公有子網路,且叢集僅啟用公有API伺服器端點,則子網路必須MapPublicIPOnLaunch設定為 true ,執行個體才能成功加入叢集。如果子網路是在 2020 年 3 月 26 日當天或之後使用 eksctlAmazon EKS vended AWS CloudFormation 範本建立,則此設定已設定為 true。如果在 2020 年 3 月 26 日之前使用 eksctl或 AWS CloudFormation 範本建立子網路,則需要手動變更設定。如需詳細資訊,請參閱修改子網路的公有 IPv4 定址屬性

      • 如果您使用啟動範本並指定多個網路介面,即使 MapPublicIpOnLaunch 設定為 ,Amazon EC2也不會自動指派公有IPv4地址true。若要讓節點在此案例中加入叢集,您必須啟用叢集的私有API伺服器端點,或在私有子網路中啟動節點,並透過替代方法提供傳出網際網路存取,例如NAT閘道。如需詳細資訊,請參閱 Amazon 使用者指南 中的 Amazon EC2執行個體 IP 定址 EC2

    • 設定節點的SSH存取 (選用)。啟用SSH可讓您連線至執行個體,並在發生問題時收集診斷資訊。強烈建議您在建立節點群組時啟用遠端存取。您無法在建立節點群組之後啟用遠端存取。

      如果您選擇使用啟動範本,則不會顯示此選項。若要啟用節點的遠端存取,請在啟動範本中指定金鑰對,並確定您在啟動範本中指定之安全群組中的節點已開啟適當的連接埠。如需詳細資訊,請參閱使用自訂安全群組

      注意

      用於 Windows,此命令不會啟用 SSH。反之,它會將您的 Amazon EC2金鑰對與執行個體建立關聯,並允許您與執行個體RDP建立關聯。

    • 針對SSH金鑰對 (選用),選擇要使用的 Amazon EC2SSH金鑰。用於 Linux 資訊,請參閱 Amazon EC2金鑰對和 LinuxAmazon EC2使用者指南 中的 執行個體。用於 Windows 資訊,請參閱 Amazon EC2金鑰對和 WindowsAmazon EC2使用者指南 中的 執行個體。如果您選擇使用啟動範本,則無法選取範本。當使用 為節點群組提供 Amazon EC2SSH金鑰時 Bottlerocket AMIs,系統也會啟用 管理容器。如需詳細資訊,請參閱 上的管理容器 GitHub.

    • 對於允許從 SSH遠端存取,如果您想要限制對特定執行個體的存取,請選取與這些執行個體相關聯的安全群組。如果您未選取特定安全群組,則允許從網際網路上的任何地方SSH存取 (0.0.0.0/0)。

  9. Review and create (檢閱並建立) 頁面上,檢閱您的受管節點群組組態,然後選擇 Create (建立)

    如果節點無法加入叢集,請參閱疑難排解章節節點無法加入叢集中的 。

  10. 查看節點的狀態,並等待他們到達 Ready 狀態。

    kubectl get nodes --watch
  11. (GPU僅限節點) 如果您選擇GPU執行個體類型和 Amazon EKS最佳化加速 AMI,則必須將NVIDIA裝置外掛程式套用至 Kubernetes 作為 DaemonSet 在您的叢集上。在執行下列命令之前,將 取代vX.X.X為您想要的 NVIDIA/k8s-device-plugin 版本。

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml

現在您已擁有具有節點的正常運作 Amazon EKS叢集,可以開始安裝 Kubernetes 附加元件和將應用程式部署到您的叢集。以下文件主題可協助您擴展叢集的功能。