本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
啟動自我管理的 Amazon Linux 節點
本主題會說明如何啟動已向 Amazon EKS 叢集註冊的 Linux 節點的 Auto Scaling 群組。節點加入叢集後,您就可以將 Kubernetes 應用程式部署至其中。您也可以使用eksctl
或啟動自我管理的 AWS Management Console Amazon Linux 節點。如果您需要在上啟動節點 AWS Outposts,請參閱啟動 Outpost 上自我管理的 Amazon Linux 節點。
必要條件
-
現有 Amazon EKS 叢集。若要部署叢集,請參閱 建立 Amazon EKS 叢集。如果您已啟用 AWS Outposts、 AWS Wavelength或 L AWS ocal Zones 的子網路,則在您建立叢集時不得傳入這些子網路。 AWS 區域
-
供節點使用的現有 IAM 角色。若要建立服務角色,請參閱Amazon EKS 節點 IAM 角色。如果此角色沒有任何 VPC CNI 的政策,則 VPC CNI Pod 需要以下個別角色。
-
(選用,但建議) Amazon VPC CNI plugin for Kubernetes 附加元件設定有自己的 IAM 角色,該角色已連接必要的 IAM 政策。如需詳細資訊,請參閱 設定為Amazon VPC CNI plugin for Kubernetes使用服務帳戶的 IAM 角色 (IRSA)。
-
熟悉 選擇 Amazon EC2 執行個體類型 中列出的考量。取決於您選擇的執行個體類型,您的叢集和 VPC 可能還有其他先決條件。
- eksctl
-
注意
eksctl
目前不支持 Amazon Linux 2023。先決條件
已在裝置或 AWS CloudShell上安裝版本
0.175.0
或更新版本的eksctl
命令列工具。如需有關安裝或更新eksctl
的指示,請參閱eksctl
文件中的安裝一節。 使用
eksctl
啟動自我管理的 Linux 節點-
(選用) 如果 AmazonEKS_CNI_Policy 受管 IAM 政策已連接至您的 Amazon EKS 節點 IAM 角色,建議您改為將其指派給您與 Kubernetes
aws-node
服務帳戶相關聯的 IAM 角色。如需詳細資訊,請參閱 設定為Amazon VPC CNI plugin for Kubernetes使用服務帳戶的 IAM 角色 (IRSA)。 -
以下命令會在現有的叢集建立節點群組。將
取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。使用您叢集的名稱取代al-nodes
。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭,且長度不可超過 100 個字元。以您自己的值取代其餘的my-cluster
。依預設,會使用與控制平面相同的 Kubernetes 版本來建立節點。example value
在為
--node-type
選擇值之前,請先參閱 選擇 Amazon EC2 執行個體類型。使用 Amazon EC2 金鑰對或公有金鑰的名稱取代
。此金鑰會在節點啟動後用於將 SSH 套用至節點。如果您還沒有 Amazon EC2 金鑰對,可以在 AWS Management Console中建立一個。如需詳細資訊,請參閱《Amazon EC2 Linux 執行個體使用者指南》中的 Amazon EC2 金鑰對。my-key
使用下列命令來建立您的節點群組。
重要
如果您想要將節點群組部署到 AWS Outposts、Wavelength 或本機區域子網路,還有其他考量:
-
在建立叢集時,不得傳入子網路。
-
您必須使用指定子網路和
volumeType
的組態檔案來建立節點群組。如需詳細資訊,請參閱: gp2 eksctl
文件中的從組態檔案建立節點群組和組態檔案結構描述 。
eksctl create nodegroup \ --cluster
my-cluster
\ --nameal-nodes
\ --node-typet3.medium
\ --nodes3
\ --nodes-min1
\ --nodes-max4
\ --ssh-access \ --managed=false \ --ssh-public-keymy-key
若要部署節點群組:
-
其可以將比預設組態更大量的 IP 地址指派給 Pods,請參閱 增加 Amazon EC2 節點的可用 IP 地址數量。
-
其可以從與執行個體不同的 CIDR 區塊將
IPv4
地址指派給 Pods,請參閱 Pod 的自訂聯網。 -
其可以指派
IPv6
地址至 Pods 和服務,請參閱 IPv6叢集的位址Pods、和 services。 -
您必須使用
config
檔案部署節點群組來使用containerd
執行時間。如需詳細資訊,請參閱 測試從移轉Docker到 containerd。 -
沒有對外網際網路存取,請參閱 私有叢集要求。
如需所有可用選項和預設值的完整清單,請輸入以下命令。
eksctl create nodegroup --help
如果節點無法加入叢集,請參閱故障診斷指南中的 節點無法加入叢集。
範例輸出如下。建立節點時,會有數行輸出。輸出的最後幾行之一類似於以下的範例行。
[✔] created 1 nodegroup(s) in cluster "
my-cluster
" -
-
(選用) 部署範例應用程式以測試您的叢集和 Linux 節點。
如果下列條件為真,則建議封鎖 Pod 對 IMDS 的存取:
您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶,以便 Pods 僅具有所需的最低權限。
叢集Pods中的否需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS) 的其他原因,例如擷取目前 AWS 區域的執行個體。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。
-
- AWS Management Console
-
步驟 1:使用 AWS Management Console啟動自我管理的 Linux 節點
-
下載最新版本的 AWS CloudFormation 模板。
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
-
等待您的叢集狀態顯示為
ACTIVE
。如果在叢集處於作用中狀態之前啟動節點,則節點向叢集註冊將會失敗,導致必須再次啟動。 -
開啟主 AWS CloudFormation 控台,網址為 https://console.aws.amazon.com/cloudformation
。 -
選擇 Create stack (建立堆疊),然後選取 With new resources (standard) (使用新資源 (標準))。
-
針對 Specify template (指定範本),選取 Upload a template file (上傳範本檔案),然後選取 Choose file (選擇檔案)。
-
選取您下載的
檔案。amazon-eks-nodegroup.yaml
-
選取下一步。
-
在 Specify stack details (指定堆疊詳細資訊) 頁面上,據此填寫下列參數,然後選擇 Next (下一步):
-
Stack name:為您的 AWS CloudFormation 堆疊選擇堆疊名稱。例如,您可以稱它為
。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以字母字元開頭,且長度不可超過 100 個字元。my-cluster-nodes
-
ClusterName:輸入您在建立 Amazon EKS 叢集時使用的名稱。此名稱必須與叢集名稱相同,否則節點無法加入叢集。
-
ClusterControlPlaneSecurityGroup:從建立 VPC 時產生的 AWS CloudFormation 輸出中選擇SecurityGroups值。
下列步驟顯示擷取適用群組的一種操作。
在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters
。 -
選擇叢集的名稱。
-
選擇 Networking (網路) 索引標籤。
-
從ClusterControlPlaneSecurityGroup下拉式清單中選取時,請使用其他安全性群組值作為參考。
-
NodeGroupName:輸入節點群組的名稱。此名稱稍後可用以識別為您節點建立的 Auto Scaling 節點群組。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。
-
NodeAutoScalingGroupMinSize:輸入節點「自動調整」群組可擴充至的最小節點數。
-
NodeAutoScalingGroupDesiredCapacity:輸入堆疊建立時要擴展到的所需節點數。
-
NodeAutoScalingGroupMaxSize:輸入節點「自動調整」群組可向外擴充至的節點數目上限。
-
NodeInstanceType:選擇節點的執行個體類型。如需詳細資訊,請參閱 選擇 Amazon EC2 執行個體類型。
-
NodeImageIdSSMParam:針對可變版本的最新 Amazon EKS 優化 AMI 的 Amazon EC2 Systems Manager 參數預先填充。Kubernetes若要使用 Amazon EKS 支援不同的 Kubernetes 次要版本,請將
取代為不同的受支援版本。建議指定與叢集相同的 Kubernetes 版本。1.XX
您也可以用不同
的 AMI 類型替換。如需詳細資訊,請參閱 擷取 Amazon EKS 最佳化 Amazon Linux AMI ID。amazon-linux-2
注意
Amazon EKS 節點 AMI 基於 Amazon Linux。您可以透過 Amazon Linux 安全中心
或是訂閱關聯的 RSS 摘要 ,追蹤 Amazon Linux 2 的安全或隱私權事件。安全與隱私權事件包含問題的概觀、哪些套件受到影響,以及如何更新您的執行個體以修正問題。 -
NodeImageId: (選擇性) 如果您使用自己的自訂 AMI (而不是 Amazon EKS 最佳化 AMI),請為您 AWS 區域的. 如果您在此處指定一個值,它會覆寫 NodeImageIdSSmPar am 欄位中的任何值。
-
NodeVolumeSize:以 GiB 為節點指定根磁碟區大小。
-
NodeVolumeType:指定節點的根磁碟區類型。
-
KeyName:輸入 Amazon EC2 安全殼層 key pair 的名稱,您可以在啟動後使用 SSH 連線到節點。如果您還沒有 Amazon EC2 金鑰對,可以在 AWS Management Console中建立一個。如需詳細資訊,請參閱《Amazon EC2 Linux 執行個體使用者指南》中的 Amazon EC2 金鑰對。
注意
如果您沒有在這裡提供 key pair, AWS CloudFormation 堆疊建立會失敗。
-
BootstrapArguments:指定要傳遞給節點啟動程序檔的任何選用引數,例如額外
kubelet
引數。如需詳細資訊,請檢視 GitHub 上的 bootstrap script usage information(啟動程序指令碼使用資訊)。 若要部署節點群組:
-
其可以將比預設組態更大量的 IP 地址指派給 Pods,請參閱 增加 Amazon EC2 節點的可用 IP 地址數量。
-
其可以從與執行個體不同的 CIDR 區塊將
IPv4
地址指派給 Pods,請參閱 Pod 的自訂聯網。 -
其可以指派
IPv6
地址至 Pods 和服務,請參閱 IPv6叢集的位址Pods、和 services。 -
您必須使用
config
檔案部署節點群組來使用containerd
執行時間。如需詳細資訊,請參閱 測試從移轉Docker到 containerd。 -
沒有對外網際網路存取,請參閱 私有叢集要求。
-
-
DisableIMDSv1:預設情況下,每個節點都支援執行個體中繼資料服務版本 1 (IMDSv1) 和 IMDSv2。您可以停用 IMDSv1。若要防止節點群組中的未來節點和 Pods 使用 MDSv1,請將 DisableIMDSv1 設定為 true。如需 IMDS 的詳細資訊,請參閱設定執行個體中繼資料服務。如需在節點上限制存取的詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。 -
VpcId:輸入您建立之 VPC 的識別碼。
-
子網路:選擇您為 VPC 建立的子網路。如果您依照 為 Amazon EKS 叢集建立 VPC 中所述的步驟建立 VPC,則只要指定要啟動節點的 VPC 中的私有子網。您可以看到哪些子網是私有子網,方法是從叢集的 Networking (聯網) 標籤打開每一個子網連結。
重要
-
如有任何子網路是公有子網路,則必須啟用自動公有 IP 地址指派設定。如果未針對公用子網路啟用此設定,則您部署到該公用子網路的任何節點都不會被指派公用 IP 位址,也無法與叢集或其他 AWS 服務通訊。如果子網路是在 2020 年 3 月 26 日之前使用任一 Amazon EKS AWS CloudFormation VPC 範本或使用
eksctl
部署,則公有子網路的自動公用 IP 位址指派將停用。如需如何啟用子網的公有 IP 地址指派的相關資訊,請參閱修改您子網的公有IPv4
定址屬性。如果將節點部署到私有子網路,則可以透過 NAT 閘道與叢集和其他 AWS 服務進行通訊。 -
如果子網路無法存取網際網路,請確定您已知悉 私有叢集要求 中的考量和額外步驟。
-
如果您選取「 AWS Outposts Wavelength」或「本機區域」子網路,則在建立叢集時不得傳入子網路。
-
-
-
請在 Configure stack options (設定堆疊選項) 頁面上選取所需的選項,然後選擇 Next (下一頁)。
-
選取我了解 AWS CloudFormation 會建立 IAM 資源。左側的核取方塊,然後選擇 Create stack (建立堆疊)。
-
當當堆疊已完成建立時,從主控台將其選取,然後選擇 Outputs (輸出)。
-
記錄已建立之節點群組的。NodeInstanceRole當您設定 Amazon EKS 節點時會需要此值。
步驟 2:讓節點加入叢集
注意
如果您在沒有傳出網際網路存取權的私有 VPC 內啟動節點,則必須啟用節點才能從 VPC 內加入叢集。
-
檢查以瞭解是否有
aws-auth
ConfigMap
。kubectl describe configmap -n kube-system aws-auth
-
如果您看到
aws-auth
ConfigMap
,請視需要更新之。-
開啟
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)。
如果節點無法加入叢集,請參閱故障診斷指南中的 節點無法加入叢集。
-
(僅限 GPU 節點) 若選擇了 GPU 執行個體類型以及 Amazon EKS 最佳化之加速 AMI,您就必須套用 Kubernetes 專用 NVIDIA 裝置外掛程式
作為叢集上的 DaemonSet。在執行下列命令之前,請先
以所需的 NVidia/K8 s-device-pluginvX.X.X
版本取代。 kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/
vX.X.X
/nvidia-device-plugin.yml
步驟 3:其他動作
-
(選用) 部署範例應用程式以測試您的叢集和 Linux 節點。
-
(選用) 若將 AmazonEKS_CNI_Policy 受管 IAM 政策 (如果您有
IPv4
叢集) 或
(您具有AmazonEKS_CNI_IPv6_Policy
IPv6
叢集時自我建立的政策) 連接至 Amazon EKS 節點 IAM 角色,建議改為將其指派給您與 Kubernetesaws-node
服務帳戶關聯的 IAM 角色。如需詳細資訊,請參閱 設定為Amazon VPC CNI plugin for Kubernetes使用服務帳戶的 IAM 角色 (IRSA)。 如果下列條件為真,我們建議封鎖 Pod 對 IMDS 的存取:
您計劃將 IAM 角色指派給您的所有 Kubernetes 服務帳戶,以便 Pods 僅具有所需的最低權限。
叢集Pods中的否需要存取 Amazon EC2 執行個體中繼資料服務 (IMDS) 的其他原因,例如擷取目前 AWS 區域的執行個體。
如需詳細資訊,請參閱限制存取指派給工作節點的執行個體設定檔
。
-