協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
想要為此使用者指南做出貢獻? 選擇 GitHub 上的編輯此頁面連結,該連結位於每個頁面的右窗格中。您的貢獻將幫助我們的使用者指南更適合每個人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為您的叢集建立受管節點群組
本主題會描述如何啟動已向 Amazon EKS 叢集註冊的節點的 Amazon EKS 受管節點群組。節點加入叢集後,您就可以將 Kubernetes 應用程式部署至其中。
如果這是您第一次啟動 Amazon EKS 受管節點群組,建議您改為遵循 中的其中一個指南開始使用 Amazon EKS。這些指南提供使用節點建立 Amazon EKS 叢集的逐步解說。
重要
-
Amazon EKS 節點是標準的 Amazon EC2 執行個體。系統會根據正常的 Amazon EC2 價格向您收費。如需詳細資訊,請參閱 Amazon EC2 定價
。 -
您無法在已啟用 AWS Outpost 或 Wavelength AWS 的 AWS 區域中建立受管節點。您可改為建立自我管理的節點。如需詳細資訊,請參閱建立自我管理的 Amazon Linux 節點、建立自我管理Microsoft Windows節點及建立自我管理Bottlerocket節點。您也可以在 Outpost 上建立自我管理的 Amazon Linux 節點群組。如需詳細資訊,請參閱在 AWS Outposts 上建立 Amazon Linux 節點。
-
如果您未為 Amazon EKS 最佳化 Linux 或 Bottlerocket 隨附的
bootstrap.sh
檔案指定 AMI ID,受管節點群組會強制執行 值的最大值maxPods
。對於少於 30 個 vCPU 的執行個體,數量上限為110
。對於具有 30 個以上 vCPU 的執行個體,數量上限會跳至250
。這些數字是根據 Kubernetes 可擴展性閾值和內部 Amazon EKS 可擴展性團隊測試的建議設定。如需詳細資訊,請參閱 Amazon VPC CNI 外掛程式增加每節點的 Pod 限制 部落格文章。
-
現有 Amazon EKS 叢集。若要部署叢集,請參閱 建立 Amazon EKS 叢集。
-
供節點使用的現有 IAM 角色。若要建立服務角色,請參閱Amazon EKS 節點 IAM 角色。如果此角色沒有 VPC CNI 的任一政策,則 VPC CNI Pod 需要下列個別角色。
-
(選用,但建議) Amazon VPC CNI plugin for Kubernetes 附加元件設定有自己的 IAM 角色,該角色已連接必要的 IAM 政策。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。
-
熟悉選擇最佳 Amazon EC2 節點執行個體類型中列出的考量事項。取決於您選擇的執行個體類型,您的叢集和 VPC 可能還有其他先決條件。
-
若要新增 Windows 受管節點群組,您必須先啟用叢集的 Windows 支援。如需詳細資訊,請參閱在 EKS 叢集上部署Windows節點。
您可以使用下列其中一項來建立受管節點群組:
eksctl
使用 eksctl 建立受管節點群組
此程序需要 eksctl
版本 0.199.0
或更新版本。您可使用以下命令檢查您的版本:
eksctl version
如需有關安裝或更新 eksctl
的指示,請參閱 eksctl
文件中的 Installation
-
(選用) 如果 AmazonEKS_CNI_Policy 受管 IAM 政策連接至您的 Amazon EKS 節點 IAM 角色,建議您將其指派給您改為與服務Kubernetes
aws-node
帳戶關聯的 IAM 角色。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。 -
使用或不使用自訂啟動範本來建立受管節點群組。手動指定啟動範本可讓您更靈活地自訂節點群組。例如,此方式可以允許部署自訂 AMI,或對 Amazon EKS 最佳化 AMI 中的
boostrap.sh
指令碼提供引數。如需每個可用選項和預設值的完整清單,請輸入以下命令。eksctl create nodegroup --help
在下列命令中,將
my-cluster
取代為您的叢集名稱,並將my-mng
取代為您的節點群組名稱。節點群組名稱不能超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。重要
如果您在第一次建立受管節點群組時未使用自訂啟動範本,則之後不要為節點群組使用範本。如果您未指定自訂啟動範本,系統會自動產生啟動範本,我們不建議您手動修改。手動修改此自動產生的啟動範本可能會導致錯誤。
沒有啟動範本
eksctl
會在您的帳戶中建立預設 Amazon EC2 啟動範本,並使用根據您指定之選項建立的啟動範本來部署節點群組。指定 --node-type
的值之前,請參閱 選擇最佳的 Amazon EC2 節點執行個體類型。
將 ami-family
取代為允許的關鍵字。如需詳細資訊,請參閱 eksctl
文件中的 Setting the node AMI Familymy-key
取代為您的 Amazon EC2 金鑰對或公有金鑰的名稱。此金鑰會在節點啟動後用於將 SSH 套用至節點。
注意
對於 Windows,此命令不會啟用 SSH。而是將 Amazon EC2 金鑰對與執行個體建立關聯,讓您可以 RDP 至該執行個體中。
如果您還沒有 Amazon EC2 金鑰對,您可以在 中建立一個金鑰對 AWS Management Console。如需Linux詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對和 Linux 執行個體。 Amazon EC2 如需Windows詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對和 Windows 執行個體。 Amazon EC2
如果下列條件為真,則建議封鎖 Pod 對 IMDS 的存取:
-
您計劃將 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、Pods從與執行個體不同的 CIDR 區塊將 IP 地址指派給 ,以及部署到沒有網際網路存取的叢集。如需詳細資訊,請參閱 使用字首將更多 IP 地址指派給 Amazon EKS 節點、使用自訂聯網部署Pods在備用子網路中 和 部署網際網路存取受限的私有叢集 以取得要新增至之前命令的其他選項。
受管節點群組會根據執行個體類型,計算並套用可在節點群組之每個節點上執行的 Pods 數量上限單一數值。若您建立具有不同執行個體類型的節點群組,則在所有執行個體類型中計算的最小值,會套用為可在節點群組中每種執行個體類型上執行的 Pods 數量上限。受管節點群組會使用每個 Amazon EC2 執行個體類型的 Amazon EKS 建議 Pod 上限中參考的指令碼來計算值。
使用啟動範本
啟動範本必須已存在,且必須符合啟動範本組態基本中指定的要求。如果下列條件為真,則建議封鎖 Pod 對 IMDS 的存取:
-
您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶,以便 Pods 僅具有所需的最低權限。
-
叢集Pods中沒有任何 需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS) 的其他原因,例如擷取目前 AWS 區域。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
若您要封鎖 Pod 對 IMDS 的存取,請在啟動範本中指定必要的設定。
-
將以下內容複製到您的裝置。取代
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、Pods從與執行個體不同的 CIDR 區塊將 IP 地址指派給 、使用 containerd
執行時間,以及部署到叢集,而不需要傳出網際網路存取。如需詳細資訊,請參閱適用於新增至組態檔案之其他選項的 使用字首將更多 IP 地址指派給 Amazon EKS 節點、使用自訂聯網部署Pods在備用子網路中、測試 Amazon Linux 2 從 遷移Docker至 containerd 和 部署網際網路存取受限的私有叢集。如果您未在啟動範本中指定 AMI ID,受管節點群組會根據執行個體類型,計算並套用單一值Pods,以用於節點群組每個節點上可執行的 數目上限。若您建立具有不同執行個體類型的節點群組,則在所有執行個體類型中計算的最小值,會套用為可在節點群組中每種執行個體類型上執行的 Pods 數量上限。受管節點群組會使用每個 Amazon EC2 執行個體類型 Amazon EKS 建議 Pod 中參考的指令碼來計算值。
如果您在啟動範本中指定了 AMI ID,請指定如果您使用自訂聯網或想要增加指派給執行個體的 IP 地址數量Pods,可在節點群組的每個節點上執行的 數目上限。 使用字首將更多 IP 地址指派給 Amazon EKS 節點如需詳細資訊,請參閱Amazon EKS 為每種 Amazon EC2 執行個體類型建議 Pods 數量上限。
-
使用下列命令部署節點群組。
eksctl create nodegroup --config-file eks-nodegroup.yaml
AWS Management Console
使用 建立受管節點群組 AWS Management Console
-
等待您的叢集狀態顯示為
ACTIVE
。您無法為尚未 的叢集建立受管節點群組ACTIVE
。 -
開啟 Amazon EKS 主控台
。 -
選擇要在其中建立受管節點群組的叢集名稱。
-
選取 Compute (運算) 標籤。
-
選擇 Add node group (新增節點群組)。
-
在 Configure node group (配置節點群組) 頁面上,相應地填寫參數,然後選擇 Next (下一步)。
-
Name (名稱) – 輸入受管節點群組的唯一名稱。節點群組名稱不能超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。
-
Node IAM role (節點 IAM 角色):選擇要與節點群組搭配使用的節點執行個體角色。如需詳細資訊,請參閱Amazon EKS 節點 IAM 角色。
重要
-
您不能使用用來建立任何叢集的相同角色。
-
我們建議使用任何自我管理節點群組目前未使用的角色。否則,您要計劃與新的自我管理節點組一起使用。如需詳細資訊,請參閱從叢集刪除受管節點群組。
-
Use launch template (使用啟動範本):(選用) 選擇是否要使用現有的啟動範本。選取啟動範本名稱。然後,選取 Launch template version (啟動範本版本)。如果您未選取版本,Amazon EKS 會使用範本的預設版本。啟動範本可讓您自訂更多節點群組,例如允許您部署自訂 AMI、將相當多的 IP 地址指派給 Pods、Pods從與執行個體不同的 CIDR 區塊將 IP 地址指派給 、啟用執行個體的
containerd
執行時間,以及將節點部署至叢集而不具備傳出網際網路存取。如需詳細資訊,請參閱 使用字首將更多 IP 地址指派給 Amazon EKS 節點、使用自訂聯網部署Pods在備用子網路中、測試 Amazon Linux 2 從 遷移Docker至 containerd 和 部署網際網路存取受限的私有叢集。啟動範本必須符合使用啟動範本自訂受管節點中的要求。如果您不使用自己的啟動範本,Amazon EKS API 會在您的帳戶中建立預設 Amazon EC2 啟動範本,並使用預設啟動範本部署節點群組。
如果您為服務帳戶實作 IAM 角色,請直接將必要的許可指派給Pod需要存取 AWS 服務的每個 ,而且叢集Pods中的 沒有任何 需要存取 IMDS 的其他原因,例如擷取目前 AWS 區域,則您也可以針對在啟動範本中不使用主機聯網Pods的 停用對 IMDS 的存取。如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -
Kubernetes 標籤 – (選用) 您可以選擇將Kubernetes標籤套用至受管節點群組中的節點。
-
Kubernetes 污點 – Kubernetes (選用) 您可以選擇將污點套用至受管節點群組中的節點。Effect (效果) 功能表中的可用選項是
NoSchedule
、NoExecute
及PreferNoSchedule
。如需詳細資訊,請參閱Pods 防止在特定節點上排程。 -
Tags (標籤) – (選用) 您可以選擇標記 Amazon EKS 受管節點群組。這些標籤不會傳播到節點群組中的其他資源,例如 Auto Scaling 群組或執行個體。如需詳細資訊,請參閱使用標籤組織 Amazon EKS 資源。
-
-
在 Set compute and scaling configuration (設定運算和擴展組態) 頁面上,相應地填寫參數,然後選擇 Next (下一步)。
-
AMI 類型 – 選取 AMI 類型。如果您正在部署 Arm 執行個體,請務必在部署之前檢閱 Amazon EKS 最佳化 Arm Amazon Linux AMIs中的考量事項。
如果您在上一頁指定了啟動範本,並在啟動範本中指定了 AMI,則無法選取值。系統會顯示範本中的值。範本中指定的 AMI 必須符合指定 AMI 的要求。
-
Capacity type (容量類型) – 選取容量類型。如需選擇容量類型的詳細資訊,請參閱 受管節點群組容量類型。您無法在相同的節點群組中混合不同的容量類型。如果要同時使用這兩種容量類型,請建立個別的節點群組,每個群組都有自己的容量和執行個體類型。如需佈建和擴展 GPU 加速工作者節點的相關資訊使用 ML 的容量區塊建立受管節點群組,請參閱 。
-
Instance types (執行個體類型):依預設會指定一或多個執行個體類型。若要移除預設執行個體類型,請選取執行個體類型的右側的
X
。選擇要在受管節點群組中使用的執行個體類型。如需詳細資訊,請參閱選擇最佳的 Amazon EC2 節點執行個體類型。主控台會顯示一組常用的執行個體類型。如果您需要使用未顯示的執行個體類型建立受管節點群組,請使用
eksctl
、CLI、 AWS CloudFormation 或 SDK AWS 來建立節點群組。如果您在上一頁指定了啟動範本,則無法選取值,因為必須在啟動範本中指定執行個體類型。系統會顯示啟動範本中的值。如果為 Capacity type (容量類型) 選取了 Spot,則建議您指定多個執行個體類型以增強可用性。 -
磁碟大小 – 輸入要用於節點根磁碟區的磁碟大小 (以 GiB 為單位)。
如果您在上一頁指定了啟動範本,則無法選取值,因為它必須在啟動範本中指定。
-
Desired size (所需大小) – 指定受管節點群組目前在啟動時應該維護的節點數量。
注意
Amazon EKS 不會自動擴展您的節點群組。不過,您可以設定 Kubernetes Cluster Autoscaler 為您執行此操作。如需詳細資訊,請參閱開啟 Cluster Autoscaler AWS
。 -
Minimum size (大小下限) – 指定受管節點群組可縮減至的節點數量下限。
-
Maximum size (大小上限):指定受管節點群組可擴增至的節點數量上限。
-
Node group update configuration (節點群組更新組態) – (選用) 您可以選取要平行更新的節點數量或百分比。這些節點在更新期間將無法使用。對於 Maximum unavailable (無法使用的上限),選取下列其中一個選項,然後指定 Value (值):
-
Number (數量):選取並指定可平行更新節點群組的節點數量。
-
Percentage (百分比):選取並指定可平行更新節點群組的節點百分比。如果您的節點群組中有大量節點,這會很有用。
-
-
節點自動修復組態 – (選用) 如果您啟用啟用節點自動修復核取方塊,Amazon EKS 會在偵測到問題時自動取代節點。如需詳細資訊,請參閱啟用節點自動修復並調查節點運作狀態問題。
-
-
在 Specify networking (指定聯網) 頁面上,據此填寫參數,然後選擇 Next (下一步)。
-
Subnets (子網路):選擇要將受管節點啟動至其中的子網路。
重要
如果您正在多個由 Amazon EBS 磁碟區支援的可用區域中執行具狀態的應用程式,並使用 Kubernetes Cluster Autoscaler
,您應該設定多個節點群組,每個群組範圍都限定在單一可用區域。另外,您應該啟用 --balance-similar-node-groups
功能。重要
-
如果選擇公有子網路,而且您的叢集只啟用了公有 API 伺服器端點,則子網路的必須將
MapPublicIPOnLaunch
設定為true
,讓執行個體成功加入叢集。如果子網路是在 2020 年 3 月 26 日或之後使用eksctl
或 Amazon EKS vended AWS CloudFormation 範本建立,則此設定已設為true
。如果在 2020 年 3 月 26 日之前使用eksctl
或 AWS CloudFormation 範本建立子網路,則需要手動變更設定。如需詳細資訊,請參閱修改子網的公有 IPv4 定址屬性。 -
如果您使用啟動範本並指定多個網路介面,即使
MapPublicIpOnLaunch
設為 ,Amazon EC2 也不會自動指派公有IPv4
地址true
。若要讓節點在此案例中加入叢集,您必須啟用叢集的私有 API 伺服器端點,或在私有子網路中啟動節點,並透過替代方法提供傳出網際網路存取,例如 NAT Gateway。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 執行個體 IP 定址。 Amazon EC2
-
-
設定 SSH 存取節點 (選用)。啟用 SSH 可讓您連接到執行個體,並在發生問題時收集診斷資訊。強烈建議您在建立節點群組時啟用遠端存取。您無法在建立節點群組後啟用遠端存取。
如果您選擇使用啟動範本,則不會顯示此選項。若要啟用節點的遠端存取,請在啟動範本中指定金鑰對,並確定您在啟動範本中指定之安全群組中的節點已開啟適當的連接埠。如需詳細資訊,請參閱使用自訂安全群組。
注意
對於 Windows,此命令不會啟用 SSH。而是將 Amazon EC2 金鑰對與執行個體建立關聯,讓您可以 RDP 至該執行個體中。
-
對於 SSH key pair (SSH 金鑰對) (選用),選擇要使用的 Amazon EC2 SSH 金鑰。如需Linux詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對和 Linux 執行個體。 Amazon EC2 如需Windows詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對和 Windows 執行個體。 Amazon EC2 如果您選擇使用啟動範本,則無法選取。當使用 Bottlerocket AMI 為節點群組提供 Amazon EC2 SSH 金鑰時,也會啟用管理容器。如需詳細資訊,請參閱 GitHub 上的管理容器
。 -
對於 Allow SSH remote access from (允許 SSH 遠端存取來自),如果要限制對特定執行個體的存取,請選取與這些執行個體相關聯的安全群組。如果您未選取特定安全群組,則可從網際網路的任何位置存取 SSH (
0.0.0.0/0
)。
-
-
在 Review and create (檢閱並建立) 頁面上,檢閱您的受管節點群組組態,然後選擇 Create (建立)。
如果節點無法加入叢集,請參閱疑難排解章節節點無法加入叢集中的 。
-
查看節點的狀態,並等待他們到達
Ready
狀態。kubectl get nodes --watch
-
(僅限 GPU 節點) 如果您選擇 GPU 執行個體類型和 Amazon EKS 最佳化加速 AMI,則必須將 Kubernetes 的 NVIDIA 裝置外掛程式
套用為叢集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
安裝 Kubernetes 附加元件
現在,您已擁有具有節點的正常運作 Amazon EKS 叢集,可以開始安裝Kubernetes附加元件,並將應用程式部署到您的叢集。以下文件主題可協助您擴展叢集的功能。
-
建立叢集的 IAM 主體是唯一可以使用
kubectl
或 AWS Management Console對 Kubernetes API 伺服器進行呼叫的主體。如果要其他 IAM 主體能夠存取叢集,則需新增這些主體。如需詳細資訊,請參閱 授予 Kubernetes IAM的使用者和角色存取權 APIs 和 所需的許可。 -
如果下列條件為真,則建議封鎖 Pod 對 IMDS 的存取:
-
您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶,以便 Pods 僅具有所需的最低權限。
-
叢集Pods中沒有任何 需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS) 的其他原因,例如擷取目前 AWS 區域。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -
-
設定 Kubernetes Cluster Autoscaler
以自動調整節點群組中的節點數量。 -
將範例應用程式部署至叢集。
-
使用管理叢集的重要工具來組織和監控叢集資源。