協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
快速入門:部署 Web 應用程式並存放資料
部署遊戲應用程式及在 Amazon EKS 上持續保留其資料
這項快速入門教學課程介紹了部署 2048 遊戲範例應用程式,以及使用 eksctl
隨著課程的進行,我們將逐步引導您完成叢集設定程序。Amazon EKS 自動模式可自動執行使用 EC2 受管執行個體建立節點、建立 Application Load Balancer,以及建立 EBS 磁碟區等任務。
總的來說,您將部署工作負載範例,包含與 AWS 服務完全整合所需的自訂註解。
於本教學課程中
您將藉助隨附的 eksctl 叢集範本,透過 EKS 自動模式來建置叢集,以便自動執行節點佈建。
VPC 組態:使用隨後的 eksctl 叢集範本時,eksctl 會針對叢集自動建立 IPv4 虛擬私有雲端 (VPC)。依預設,除了建立公有與私有端點,eksctl 還會設定可滿足所有聯網需求的 VPC。
執行個體管理:EKS 自動模式依據 Kubernetes 應用程式的需求,動態新增或移除 EKS 叢集中的節點。
資料持續保留:藉助 EKS 自動模式的區塊儲存功能,即使涉及 Pod 重新啟動或故障,也能確應用程式資料持續保留。
外部應用程式存取:藉助 EKS 自動模式的負載平衡功能,動態佈建 Application Load Balancer (ALB)。
先決條件
開始之前,確認您已設定以下先決條件以使用 Amazon EKS:
-
設定 AWS CLI 及設定憑證
-
安裝 eksctl
-
安裝 kubectl
如需詳細資訊,請參閱 設定以使用 Amazon EKS。
設定叢集
在這個部分,您將藉助 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
現在,我們可隨時建立叢集。
建立 Amazon EKS 叢集:
eksctl create cluster -f cluster-config.yaml
重要
若不使用 eksctl 建立叢集,您需手動標記 VPC 子網路。
建立 IngressClass
針對 EKS 自動模式建立 IngressClass Kubernetes。IngressClass 定義 EKS 自動模式處理傳入資源的方式。此步驟設定 EKS 自動模式的負載平衡功能。在為應用程式建立傳入資源時,EKS 自動模式將利用此 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,並指示 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 或節點發生故障,仍可確保遊戲進度及資料是安全的。
若您喜歡此教學課程,您可提供意見回饋告知我們,以便我們為您提供更多此類使用案例的特定快速入門教學課程。
刪除您的叢集和節點
在完成為本教學建立的叢集後,您應該使用以下命令刪除叢集來完成清理。若想在清理前使用此叢集執行更多作業,請參閱後續步驟。
eksctl delete cluster -f ./cluster-config.yaml
EKS 會在刪除叢集時,自動清理其佈建的任何節點。