協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
將範例負載平衡器工作負載部署至 EKS 自動模式
本指南將引導您在 Amazon EKS 上部署容器化版本的 2048 遊戲,並包含負載平衡和網際網路可存取性。
先決條件
-
EKS 自動模式叢集
-
kubectl已設定為與叢集互動 -
建立 ALB 資源的適當 IAM 許可
步驟 1:建立命名空間
首先,為 2048 遊戲應用程式建立專用命名空間。
建立名為 01-namespace.yaml 的檔案:
apiVersion: v1 kind: Namespace metadata: name: game-2048
套用命名空間組態:
kubectl apply -f 01-namespace.yaml
步驟 2:部署應用程式
應用程式會執行多個 2048 遊戲容器的複本。
建立名為 02-deployment.yaml 的檔案:
apiVersion: apps/v1 kind: Deployment metadata: namespace: game-2048 name: deployment-2048 spec: selector: matchLabels: app.kubernetes.io/name: app-2048 replicas: 5 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always name: app-2048 ports: - containerPort: 80 resources: requests: cpu: "0.5"
注意
如果您在載入映像 public.ecr.aws/l6m2t8p7/docker-2048:latest 時遇到錯誤,請確認您的節點 IAM 角色具有從 ECR 提取映像的足夠許可。如需詳細資訊,請參閱 節點 IAM 角色。此外,範例中的 docker-2048 映像是 x86_64 映像,並且不會在其他架構執行。
關鍵元件:
-
部署 5 個應用程式複本
-
使用公有 ECR 映像
-
每個 Pod 請求 0.5 個 CPU 核心
-
公開 HTTP 流量的連接埠 80
套用部署:
kubectl apply -f 02-deployment.yaml
步驟 3:建立服務
服務會將部署公開至叢集網路。
建立名為 03-service.yaml 的檔案:
apiVersion: v1 kind: Service metadata: namespace: game-2048 name: service-2048 spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app.kubernetes.io/name: app-2048
關鍵元件:
-
建立 NodePort 服務
-
將連接埠 80 映射至容器的連接埠 80
-
使用標籤選擇器來尋找 Pod
套用服務:
kubectl apply -f 03-service.yaml
步驟 4:設定負載平衡
您將設定傳入,以將應用程式公開至網際網路。
首先,建立 IngressClass。建立名為 04-ingressclass.yaml 的檔案:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: labels: app.kubernetes.io/name: LoadBalancerController name: alb spec: controller: eks.amazonaws.com/alb
注意
然後建立傳入資源。建立名為 05-ingress.yaml 的檔案:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: game-2048 name: ingress-2048 annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: service-2048 port: number: 80
關鍵元件:
-
建立面向網際網路的 ALB
-
使用 IP 目標類型來進行直接 Pod 路由
-
將所有流量 (/) 路由到遊戲服務
套用傳入組態:
kubectl apply -f 04-ingressclass.yaml kubectl apply -f 05-ingress.yaml
步驟 5:確認部署
-
檢查所有 Pod 是否處於執行狀態:
kubectl get pods -n game-2048 -
確認服務是否已建立:
kubectl get svc -n game-2048 -
取得 ALB 端點:
kubectl get ingress -n game-2048
傳入輸出中的 ADDRESS 欄位將顯示您的 ALB 端點。等待 2-3 分鐘,讓 ALB 完成佈建並註冊所有目標。
步驟 6:存取遊戲
開啟網頁瀏覽器,瀏覽至先前步驟中取得的 ALB 端點 URL。您應會看到 2048 遊戲介面。
步驟 7:清除
要移除在本教學課程中建立的全部資源:
kubectl delete namespace game-2048
這將刪除命名空間中的所有資源,包括部署、服務和傳入資源。
幕後情況
-
部署會建立 5 個執行 2048 遊戲的 Pod
-
服務為這些 Pod 提供穩定的網路存取
-
EKS 自動模式:
-
如何在 AWS 建立 Application Load Balancer
-
為 Pod 設定目標群組
-
設定路由規則,以將流量導向服務
-
故障診斷
如果遊戲無法載入:
-
確保所有 Pod 均在執行:
kubectl get pods -n game-2048 -
檢查傳入狀態:
kubectl describe ingress -n game-2048 -
確認 ALB 運作狀態檢查:在 AWS 主控台中檢查目標群組的運作狀態