協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
Amazon EKS 入門– AWS 管理主控台 和 AWS CLI
注意
本主題涵蓋不使用 EKS 自動模式時的入門。它會使用受管節點群組來部署節點。
EKS 自動模式會自動執行用於叢集運算、儲存和聯網的例行任務。了解如何開始使用 Amazon EKS 自動模式。EKS 自動模式是部署節點的慣用方法。
本指南可協助您使用 AWS 管理主控台 和 AWS CLI 建立 Amazon Elastic Kubernetes Service (Amazon EKS) 入門所需的所有資源。在本指南中,您可以手動建立每個資源。此教學結束時,您將擁有一個執行中的 Amazon EKS 叢集,而您可以在其中部署應用程式。
本指南中的程序可讓您完全瞭解每個資源的建立方式,以及資源彼此之間的互動方式。如果您希望自動為您建立大部分資源,請使用 eksctl CLI 建立叢集和節點。如需詳細資訊,請參閱 Amazon EKS 入門 – eksctl。
先決條件
開始此教學之前,您必須先安裝和設定下列在建立和管理 Amazon EKS 叢集所需的工具和資源。
-
AWS CLI:命令列工具,適用於使用 AWS 服務,包括 Amazon EKS。如需詳細資訊,請參閱《AWS 命令列介面使用者指南》中的安裝。安裝 AWS CLI 後,建議您也進行設定。如需詳細資訊,請參閱《AWS 命令列介面使用者指南》中的使用 aws configure 的快速組態。請注意,需要 AWS CLI v2 才能使用此頁面中顯示的 update-kubeconfig 選項。
-
kubectl:命令列工具,適用於使用 Kubernetes 叢集。如需詳細資訊,請參閱 設定 kubectl 和 eksctl。 -
所需的 IAM 許可:您使用的 IAM 安全主體必須具有使用 Amazon EKS IAM 角色、服務連結角色、AWS CloudFormation、VPC 和相關資源的許可。如需詳細資訊,請參閱《IAM 使用者指南》中的動作和使用服務連結角色。您必須以同一位使用者的身分完成本指南中的所有步驟。若要檢查目前使用者,請執行以下命令:
aws sts get-caller-identity
建議您在 Bash shell 中完成本主題中的步驟。如果您不使用 Bash shell,則某些指令碼命令 (如行接續字元以及設定和使用變數的方式) 需要針對 shell 進行調整。此外,您的 Shell 的引用及轉義規則可能會有所不同。如需詳細資訊,請參閱《AWS 命令行介面使用者指南》中的在 AWS CLI 中使用引號括住字串。
步驟 1:建立您的 Amazon EKS 叢集
重要
為了盡可能簡單快速地開始使用,本主題包含使用預設設定建立叢集的步驟。建立叢集供生產使用之前,建議您先熟悉所有設定,再使用符合需求的設定來部署叢集。如需詳細資訊,請參閱 建立 Amazon EKS 叢集。只有在建立叢集時,才能夠啟用某些設定。
-
使用符合 Amazon EKS 要求的公有和私有子網路建立 Amazon VPC。使用 Amazon EKS 支援的任何 AWS 區域取代
region-code。如需 AWS 區域的清單,請參閱《AWS 一般參考》指南中的 Amazon EKS 端點和配額。您可以使用選擇的任何名稱取代my-eks-vpc-stack。aws cloudformation create-stack \ --regionregion-code\ --stack-name my-eks-vpc-stack \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml提示
如需上一個命令建立的所有資源清單,請開啟位於 https://console.aws.amazon.com/cloudformation/
的 AWS CloudFormation 主控台。選擇 my-eks-vpc-stack堆疊,然後選擇 Resources (資源) 索引標籤。 -
建立叢集 IAM 角色,並將所需的 Amazon EKS IAM 受管政策連接到該角色。受 Amazon EKS 管理的 Kubernetes 叢集會代表您呼叫其他 AWS 服務,以管理您搭配本服務使用的資源。
-
將下列內容複製到名為
eks-cluster-role-trust-policy.json的檔案。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
建立角色。
aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"eks-cluster-role-trust-policy.json" -
將必要的 Amazon EKS 受管 IAM 政策連接到角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name myAmazonEKSClusterRole
-
-
開啟位於 https://console.aws.amazon.com/eks/home#/clusters
的 Amazon EKS 主控台。 請務必確認在主控台右上方顯示的 AWS 區域是您要建立叢集的 AWS 區域。如果不是,請選擇 AWS 區域名稱旁的下拉式清單,然後選擇要使用的 AWS 區域。
-
選擇 建立叢集。如果沒有看到這個選項,請先在左側導覽窗格中選擇叢集。
-
在 Configure cluster (設定叢集) 頁面上,執行下列操作:
-
選取自訂組態,並停用使用 EKS 自動模式。(如果您偏好 EKS 自動模式叢集,則請改為參閱 使用 AWS 管理主控台 建立 EKS 自動模式叢集。)
-
輸入叢集的名稱,例如
my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。必須以英數字元開頭,且長度不可超過 100 個字元。在您要建立叢集的 AWS 區域和 AWS 帳戶中,該名稱必須是唯一的。 -
對於 Cluster Service Role (叢集服務角色),選擇
myAmazonEKSClusterRole。 -
將其餘設定維持在其預設值,然後選取 Next (下一步)。
-
-
在 Specify networking (指定聯網) 頁面中,執行下列操作:
-
從 VPC 下拉式清單中選擇在先前步驟中建立的 VPC ID。其類似於
* | my-eks-vpc-stack-VPC。 -
從子網路下拉式清單中,選擇上一個步驟中建立的子網路。子網路將類似於
* | my-eks-vpc-stack-*。 -
從額外的安全群組下拉式清單中,選擇在上一個步驟中建立的安全群組。其類似於
* | my-eks-vpc-stack-ControlPlaneSecurityGroup-*。 -
將其餘設定維持在其預設值,然後選取 Next (下一步)。
-
-
在設定可觀測性頁面上,選擇下一步。
-
在選取附加元件頁面上,選擇下一步。
如需附加元件的詳細資訊,請參閱 Amazon EKS 附加元件。
-
在設定選取的附加元件設定頁面中,選取下一步:
-
在 Review and create (檢閱和建立) 頁面上,選取 Create (建立)。
叢集名稱右側的叢集狀態會顯示建立中幾分鐘,直到叢集佈建程序完成為止。在狀態為作用中之前不要進行下一個步驟。
注意
您可能會收到錯誤,表示在請求中的其中一個可用區域沒有足夠的容量可建立 Amazon EKS 叢集。如果發生這種情況,錯誤輸出包含的可用區域可支援新的叢集。使用至少兩個位於帳戶的支援可用區域子網路來建立您的叢集。如需詳細資訊,請參閱 容量不足。
步驟 2:將您的電腦設為與叢集進行通訊
在此區段中,您會為叢集建立 kubeconfig 檔案。此檔案中的設定會啟用 kubectl CLI 與您的叢集進行通訊。
在繼續之前,請確保在步驟 1 中,您的叢集建立已成功完成。
-
為您的叢集建立或更新
kubeconfig檔案。請使用您在其中建立叢集的 AWS 區域取代region-code。使用您叢集的名稱取代my-cluster。aws eks update-kubeconfig --regionregion-code--namemy-cluster根據預設,已在
~/.kube建立了config檔案,或者已將新叢集的組態新增至~/.kube中的現有config檔案。 -
測試組態。
kubectl get svc注意
如果您收到任何授權或資源類型錯誤,請參閱故障診斷主題中的未經授權或存取遭拒 (kubectl)。
範例輸出如下。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
步驟 3:建立節點
重要
為了盡可能簡單快速地開始使用,本主題包含使用大多數預設設定建立節點的步驟。建立節點供生產使用之前,建議您先熟悉所有設定,再使用符合需求的設定來部署節點。如需詳細資訊,請參閱 使用節點管理運算資源。只有在建立節點時,才能夠啟用某些設定。
此程序會將您的叢集設定為使用受管節點群組來建立節點,並指定您在先前步驟中建立的子網路和節點 IAM 角色。它可讓您在 Amazon EC2 執行個體上執行 Amazon Linux 應用程式。
若要進一步了解在 EKS 中設定節點的不同方式,請參閱 使用節點管理運算資源。叢集部署完成後,您可以新增其他節點類型。雖然未涵蓋在本指南中,但您也可以將 Windows 自我管理和 Bottlerocket 節點新增至您的叢集。
若要建立 EC2 Linux 受管節點群組
-
建立節點 IAM 角色,並將所需的 Amazon EKS IAM 受管政策連接到該角色。Amazon EKS 節點
kubelet常駐程式會代表您呼叫 AWS API。節點透過 IAM 執行個體描述檔和關聯的政策,取得這些 API 呼叫的許可。-
將下列內容複製到名為
node-role-trust-policy.json的檔案。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
建立節點 IAM 角色。
aws iam create-role \ --role-name myAmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-policy.json" -
將所需的受管 IAM 政策連接到角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSNodeRole -
開啟位於 https://console.aws.amazon.com/eks/home#/clusters
的 Amazon EKS 主控台。 -
選擇您在步驟 1:建立 Amazon EKS 叢集中建立的叢集的名稱,例如
my-cluster。 -
在
my-cluster頁面上,執行下列操作: -
選擇 Compute (運算) 索引標籤。
-
選擇 Add Node Group (新增節點群組)。
-
-
在 Configure Node Group (設定節點群組) 頁面上,執行以下操作:
-
對於名稱,輸入受管節點群組的唯一名稱,例如
my-nodegroup。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。 -
對於 Node IAM role name (節點 IAM 角色名稱),選擇您在前一個步驟建立的
myAmazonEKSNodeRole角色。建議每個節點群組使用其唯一的 IAM 角色。 -
選擇下一步。
-
-
在 Set compute and scaling configuration (設定運算和擴展組態) 頁面上,接受預設值,然後選取 Next (下一步)。
-
在 Specify networking (指定聯網) 頁面上,接受預設值,然後選取 Next (下一步)。
-
在 Review and create (檢閱並建立) 頁面上,檢閱您的受管節點群組組態,然後選擇 Create (建立)。
-
數分鐘後,Node Group configuration (節點群組組態) 區段中的 Status (狀態) 將從 Creating (建立中) 變更為 Active (作用中)。在狀態為作用中之前不要進行下一個步驟。
步驟 4:檢視資源
您可以檢視節點和 Kubernetes 工作負載。
-
在左側導覽窗格中選擇叢集。在 Clusters (叢集) 清單中,選擇您建立之叢集的名稱,例如
my-cluster。 -
在
my-cluster頁面上,選擇以下事項:-
Compute (運算) 標籤 – 您可以看到為叢集部署的 Nodes (節點) 清單。您可以選取節點的名稱,以查看有關節點的詳細資訊。
-
資源標籤:您會看到預設部署到 Amazon EKS 叢集的所有 Kubernetes 資源。在主控台中選取任何資源類型,以進一步了解其詳細資訊。
-
步驟 5:刪除資源
在完成為本教學建立的叢集和節點後,您應該刪除所建立的資源。如果想在刪除資源前使用此叢集執行更多作業,請參閱 後續步驟。
-
刪除您建立的任何節點群組設定檔。
-
開啟位於 https://console.aws.amazon.com/eks/home#/clusters
的 Amazon EKS 主控台。 -
在左側導覽窗格中選擇叢集。在叢集清單中,選取
my-cluster。 -
選擇 Compute (運算) 索引標籤。
-
如果建立了節點群組,請選擇
my-nodegroup節點群組,然後選擇 Delete (刪除)。輸入my-nodegroup,然後選擇刪除。 -
請刪除節點群組設定檔後再繼續。
-
-
刪除叢集。
-
在左側導覽窗格中選擇叢集。在叢集清單中,選取
my-cluster。 -
選擇 Delete cluster (刪除叢集)。
-
輸入
my-cluster,然後選擇刪除。刪除叢集後再繼續。
-
-
刪除建立的 VPC AWS CloudFormation 堆疊。
-
開啟位在 https://console.aws.amazon.com/cloudformation/
的 CloudFormation 主控台。 -
選取
my-eks-vpc-stack堆疊,然後選擇 Delete (刪除)。 -
在 刪除
my-eks-vpc-stack確認對話方塊中,選擇刪除堆疊。
-
-
刪除您建立的 IAM 角色。
-
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
從清單中選取您建立的每個角色 (
myAmazonEKSClusterRole,以及myAmazonEKSNodeRole)。選擇 Delete (刪除),輸入請求的確認文字,然後選擇 Delete (刪除)。
-
後續步驟
以下文件主題可協助您擴展叢集的功能。
-
建立叢集的 IAM 主體是唯一可以使用
kubectl或 AWS 管理主控台 對 Kubernetes API 伺服器進行呼叫的主體。如果要其他 IAM 主體能夠存取叢集,則需新增這些主體。如需詳細資訊,請參閱授予 IAM 使用者和角色對 Kubernetes API 的存取權及所需的許可。 -
將範例應用程式部署至叢集。
-
部署叢集以供生產使用之前,建議您先熟悉叢集和節點的所有設定。建立叢集時,必須進行某些設定 (例如啟用對 Amazon EC2 節點的 SSH 存取)。
-
若要提高叢集的安全性,可將 Amazon VPC 容器聯網介面外掛程式設定為使用服務帳戶的 IAM 角色。