協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
想要為此使用者指南做出貢獻? 選擇 GitHub 上的編輯此頁面連結,該連結位於每個頁面的右窗格中。您的貢獻將幫助我們的使用者指南更適合每個人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Quickstart:部署 Web 應用程式和存放資料
部署遊戲應用程式並在 Amazon EKS 上保留其資料
本快速入門教學課程示範了使用 eksctl
隨著我們的進展,我們將逐步引導您完成叢集設定程序。Amazon EKS Auto Mode 將自動化使用 EC2 受管執行個體建立節點、建立應用程式負載平衡器和建立 EBS 磁碟區的任務。
整體而言,您將部署範例工作負載,其中包含完全整合 AWS 服務所需的自訂註釋。
於本教學課程中
使用下列eksctl
叢集範本,您將使用 EKS Auto 模式建置叢集,以進行自動節點佈建。
VPC 組態 使用之後的 eksctl 叢集範本時,eksctl 會自動為叢集建立 IPv4 Virtual Private Cloud (VPC)。根據預設,除了建立公有和私有端點之外,eksctl 還會設定 VPC 來滿足所有聯網需求。
Instance Management EKS Auto Mode 會根據 Kubernetes 應用程式的需求,動態新增或移除 EKS 叢集中的節點。
資料持久性 使用 EKS Auto Mode 的區塊儲存功能來確保應用程式資料的持久性,即使在涉及 Pod 重新啟動或故障的情況下也是如此。
外部應用程式存取 使用 EKS Auto Mode 的負載平衡功能動態佈建 Application Load Balancer (ALB)。
必要條件
開始之前,請確定您已設定下列先決條件來使用 Amazon EKS:
-
設定 AWS CLI 和設定登入資料
-
安裝 eksctl
-
安裝 kubectl
如需詳細資訊,請參閱設定 以使用 Amazon EKS。
設定叢集
在本節中,您將使用 EKS Auto 模式建立叢集,以進行動態節點佈建。
建立 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 Auto 模式建立 IngressClass
Kubernetes。IngressClass 定義 EKS Auto Mode 如何處理輸入資源。此步驟會設定 EKS Auto Mode 的負載平衡功能。當您為應用程式建立輸入資源時,EKS Auto Mode 會使用此 IngressClass 自動佈建和管理負載平衡器,並將 Kubernetes 應用程式與 AWS 負載平衡服務整合。
將下列 yaml 檔案儲存為 ingressclass.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」將其路由到「遊戲-2048」命名空間中的適當服務。
-
建立名為 且
game-2048
帶有--save-config
旗標的 Kubernetes 命名空間。kubectl create namespace game-2048 --save-config
您應該會看到下列回應輸出:
namespace/game-2048 created
-
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 Auto 模式的持久性資料
現在 2048 遊戲已在您的 Amazon EKS 叢集上啟動並執行,是時候使用 Amazon EKS Auto Mode 的區塊儲存功能來確保您的遊戲資料安全保存了。
-
建立名為
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 Auto Mode 的區塊儲存功能來保留資料。這可確保您的遊戲進度和資料即使在 Pod 或節點故障時也是安全的。
如果您喜歡此教學課程,請提供意見回饋來讓我們知道,這樣我們就能為您提供更多使用案例特定的快速入門教學課程,例如此教學課程。
刪除您的叢集和節點
完成您為本教學課程建立的叢集之後,您應該使用以下命令刪除叢集來清除叢集。如果您想要在清除之前對此叢集執行更多操作,請參閱後續步驟。
eksctl delete cluster -f ./cluster-config.yaml
刪除叢集時,EKS 會自動清除其佈建的任何節點。