協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
快速入門:部署 Web 應用程式並存放資料
本快速入門教學課程會逐步引導您部署 2048 遊戲範例應用程式,並使用 eksctl
Amazon EKS Auto Mode 透過自動化區塊儲存、聯網、負載平衡和運算自動擴展等例行任務,簡化叢集管理。在設定期間,它會處理使用 EC2 受管執行個體、應用程式負載平衡器和 EBS 磁碟區的建立節點。
總而言之,您將使用與服務無縫整合所需的自訂註釋來部署範例工作負載 AWS 。
於本教學課程中
您將藉助隨附的 eksctl 叢集範本,透過 EKS 自動模式來建置叢集,以便自動執行節點佈建。
-
VPC 組態:使用後續的 eksctl 叢集範本時,eksctl 會自動為叢集建立 IPv4 Virtual Private Cloud (VPC)。依預設,除了建立公有與私有端點,eksctl 還會設定可滿足所有聯網需求的 VPC。
-
執行個體管理:EKS Auto Mode 會根據 Kubernetes 應用程式的需求,動態新增或移除 EKS 叢集中的節點。
-
資料持久性:使用 EKS Auto Mode 的區塊儲存功能來確保應用程式資料的持久性,即使在涉及 Pod 重新啟動或故障的情況下也是如此。
-
外部應用程式存取:使用 EKS Auto Mode 的負載平衡功能動態佈建 Application Load Balancer (ALB)。
先決條件
開始之前,請確定您已執行下列任務:
設定叢集
在這個部分,您將藉助 EKS 自動模式來建立叢集,以便動態佈建節點。
建立一個 cluster-config.yaml 檔案並將以下內容貼入其中。region-code 將 取代為有效的區域 (例如 us-east-1)。
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: web-quickstart region: <region-code> autoModeConfig: enabled: true
現在,我們可隨時建立叢集。
使用 建立 EKS 叢集cluster-config.yaml`:
eksctl create cluster -f cluster-config.yaml
重要
若不使用 eksctl 建立叢集,您需手動標記 VPC 子網路。
建立 IngressClass
針對 EKS 自動模式建立 IngressClass Kubernetes。IngressClass 定義 EKS 自動模式處理傳入資源的方式。此步驟設定 EKS 自動模式的負載平衡功能。當您為應用程式建立輸入資源時,EKS Auto Mode 會使用此 IngressClass 來自動佈建和管理負載平衡器,並將 Kubernetes 應用程式與 AWS 負載平衡服務整合。
以 ingressclass.yaml 儲存以下 yaml 檔案:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: ingressclass.kubernetes.io/is-default-class: "true" spec: controller: eks.amazonaws.com/alb
套用 IngressClass 至您的叢集:
kubectl apply -f ingressclass.yaml
部署 2048 遊戲範例應用程式
在這個部分,我們將逐步引導您將熱門的「2048 遊戲」作為叢集內的範例應用程式進行部署。提供的資訊清單包括 Application Load Balancer (ALB) 的自訂註解。這些註釋與 整合,並指示 EKS 將傳入的 HTTP 流量視為「面向網際網路」,並使用目標類型「ip」將其路由到game-2048命名空間中的適當服務。
注意
範例中的 docker-2048 映像是 x86_64 容器映像,並且不會在其他架構執行。
-
透過
--save-config標誌建立名稱為game-2048的 Kubernetes 命名空間。kubectl create namespace game-2048 --save-config您應該會看到下列回應輸出:
namespace/game-2048 created -
部署 2048 遊戲範例應用程式
。 kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yaml此資訊清單針對
game-2048命名空間,設定了 Kubernetes 部署、服務與傳入,從而建立必要的資源,以便在叢集內部署及公開game-2048應用程式。其包括建立一項名稱為service-2048的服務,該服務在連接埠80上公開部署;還會建立一個名稱為ingress-2048的傳入資源,該資源定義傳入 HTTP 流量的路由規則,以及面向網際網路的 Application Load Balancer (ALB) 的註解。您應該會看到下列回應輸出:namespace/game-2048 configured deployment.apps/deployment-2048 created service/service-2048 created ingress.networking.k8s.io/ingress-2048 created -
執行以下命令,獲取
game-2048命名空間的傳入資源。kubectl get ingress -n game-2048您應該會看到下列回應輸出:
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com 80 31s開始以下步驟之前,您將需要等候數分鐘,以便 Application Load Balancer (ALB) 完成佈建。
-
開啟 Web 瀏覽器並輸入上一步的
ADDRESS,以存取 Web 應用程式。例如:k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com您應在瀏覽器中看到 2048 遊戲。暢玩!
藉助 Amazon EKS 自動模式讓資料持續保留
2048 遊戲現在已在 Amazon EKS 叢集上啟動並執行,務必利用 Amazon EKS 自動模式的區塊儲存功能,讓遊戲資料安全、持續保留。
-
建立名為
storage-class.yaml的檔案:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true" -
套用
StorageClass:kubectl apply -f storage-class.yaml -
建立持續性磁碟區宣告 (PVC),以請求儲存遊戲資料。建立名稱為
ebs-pvc.yaml的檔案並為其新增以下內容:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: game-data-pvc namespace: game-2048 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: auto-ebs-sc -
將 PVC 套用至您的叢集:
kubectl apply -f ebs-pvc.yaml您應該會看到下列回應輸出:
persistentvolumeclaim/game-data-pvc created -
您現在需更新 2048 遊戲部署,以使用此 PVC 來存放資料。設定以下部署,以使用 PVC 來存放遊戲資料。建立名稱為
ebs-deployment.yaml的檔案並為其新增以下內容:apiVersion: apps/v1 kind: Deployment metadata: namespace: game-2048 name: deployment-2048 spec: replicas: 3 # Adjust the number of replicas as needed selector: matchLabels: app.kubernetes.io/name: app-2048 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - name: app-2048 image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: game-data mountPath: /var/lib/2048 volumes: - name: game-data persistentVolumeClaim: claimName: game-data-pvc -
套用更新的部署:
kubectl apply -f ebs-deployment.yaml您應該會看到下列回應輸出:
deployment.apps/deployment-2048 configured
完成這些步驟後,現在即可設定叢集上的 2048 遊戲,以利用 Amazon EKS 自動模式的區塊儲存功能持續保留資料。這樣一來,即使 Pod 或節點發生故障,仍可確保遊戲進度及資料是安全的。
若您喜歡此教學課程,您可提供意見回饋告知我們,以便我們為您提供更多此類使用案例的特定快速入門教學課程。
清除
若要避免未來產生費用,您需要手動刪除相關聯的 CloudFormation 堆疊,進而刪除在本指南中建立的所有資源,包括 VPC 網路。
刪除 CloudFormation 堆疊:
eksctl delete cluster -f ./cluster-config.yaml