全部產品
Search
文件中心

Container Service for Kubernetes:通過ACK快速搭建魔方遊戲應用

更新時間:Jan 07, 2025

ACK叢集提供高效能的容器化應用管理服務,讓您輕鬆高效地在雲端運行容器化應用。本文帶您快速體驗如何在ACK叢集中通過控制台快速部署並公開一個容器化Demo應用,即魔方遊戲,並監控應用的運行情況。

教程概覽

2024-12-12_16-00-46 (1)本教程所使用的樣本應用ACK-Cube為一個線上魔方遊戲,該遊戲通過容器鏡像部署到ACK叢集Pro版中。完成本教程後,您將建立一個魔方遊戲應用,流程如下。

  1. 開通授權並建立ACK叢集:快速完成開通授權並建立ACK叢集。

  2. 部署魔方遊戲應用:從三種部署方式中選擇一種來部署遊戲,包括控制台介面部署、ROS快速部署、kubectl部署。

  3. 公網訪問應用:應用配置完成後,擷取ack-cube服務的外部IP地址(External IP),並通過外部IP地址訪問魔方遊戲。

操作步驟

您可以從三種部署方式中選擇一種來部署魔方遊戲應用。

  • 控制台介面部署流程:快速建立叢集、部署並公開應用、訪問應用。

  • ROS快速部署流程:ROS一鍵部署叢集環境、訪問應用。

  • kubectl部署流程:快速建立叢集、串連叢集(CloudShell、kubectl用戶端、Workbench)、部署並公開應用、訪問應用。

控制台

當您首次使用ACK時,您需要開通並授權Container ServiceACK,然後建立叢集,在叢集中部署魔方應用。

1. 快速建立叢集

說明

如果您未開通Container Service並授權預設角色,以及未開通相關雲產品,則可能無法正常使用Container Service及其關聯功能。建議您按照官方文檔指引完成相應配置和授權,以確保服務能夠順利運行。詳細操作,請參見快速建立ACK託管叢集。關於ACK叢集及其所使用雲資源的收費情況,請參見產品計費

如果您是首次使用,期望快速體驗如何建立一個叢集,您可以使用叢集預設配置。如需構建一個生產環境的叢集,請參見建立ACK託管叢集

  1. 登入Container Service管理主控台叢集列表頁面,單擊建立叢集image

  2. 在上方選擇ACK 託管叢集頁簽,叢集規格選擇為Pro版,如果您有公網訪問叢集能力的需求,您可以在個人測試叢集勾選使用 EIP 暴露 API server獲得該能力,方便您的後續串連和管理叢集。然後單擊右下方的下一步:節點池配置按鈕。image

  3. 在執行個體規格中選擇任何4 vCPU、8GiB記憶體的規格,例如計算型 c6(ecs.c6.xlarge)。然後單擊右下方的下一步:組件配置按鈕。image

  4. 容器監控可選擇免費基礎版。然後單擊右下方的下一步:確認配置按鈕。image

  5. 最後單擊右下方的建立叢集按鈕,等待叢集建立完成即可。

2. 部署並公開應用

本步驟指導您如何在新建立的ACK叢集中快速部署一個無狀態應用(Deployment),即魔方遊戲,並將該應用向公網公開。關於建立Deployment的詳細參數描述,請參見建立無狀態工作負載Deployment

  1. 在叢集列表頁面中,單擊目的地組群名稱(即ACK-Demo)。

  2. 在叢集管理頁左側導覽列,選擇工作負載 > 無狀態

  3. 無狀態頁面,單擊使用鏡像建立

  4. 應用基本資料頁簽,設定應用程式名稱為ack-cube。

  5. 單擊下一步,在容器配置頁簽,配置容器的相關參數。

    image

    配置項

    說明

    樣本值

    鏡像名稱

    直接輸入鏡像名稱。

    輸入registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0

    資源限制

    根據需要為該應用指定所能使用的資源上限,防止佔用過多資源。

    1 Core,記憶體1024 MiB,Ephemeral Storage為空白。

    所需資源

    根據需要為該應用指定預留的資源額度,防止因資源不足而導致應用不可用。

    0.5 Core,記憶體512 MiB,Ephemeral Storage為空白。

    連接埠

    設定容器的連接埠。

    ack-cube,80,TCP。

  6. 單擊下一步,在進階配置頁簽,單擊服務(Service)右側的建立

  7. 建立服務對話方塊中,設定服務的相關參數,單擊建立,以通過該服務公開ack-cube應用。

    image

    配置項

    說明

    樣本值

    名稱

    輸入服務的名稱。

    ack-cube-svc

    類型

    選擇服務類型,即服務訪問的方式。依次選擇負載平衡 > 傳統型負載平衡CLB > 建立資源,在個人測試環境CLB資源保持預設即可。

    使用預設設定。

    連接埠

    設定服務連接埠容器連接埠容器連接埠需要與後端的Pod中暴露的容器連接埠一致。

    皆為80。

  8. 進階配置頁簽,單擊頁面右下角的建立

    建立成功後,預設進入建立完成頁面,會列出應用程式套件含的對象,您可以單擊查看應用詳情進行查看。succeed

3. 訪問應用

本步驟指導您如何通過服務(Service)來訪問新部署的容器化應用。

登入Container Service管理主控台叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態找到命名空間為default,名稱為ack-cube的應用。單擊訪問方式頁簽,找到新建立的服務(即ack-cube-svc),單擊外部端點列的連結,即可訪問魔方遊戲。image

ROS快速部署

您可以藉助ROS模板一鍵部署,在10分鐘內搭建起ACK叢集並部署魔方遊戲應用。同時使用負載平衡服務將該應用程式指派一個可訪問的公網IP地址。您只需在瀏覽器中點擊,即可輕鬆訪問該應用。

展開查看建立的雲資源

本方案的技術架構包括以下雲端服務:

  • Container Service Kubernetes 版:搭建1個ACK叢集Pro版環境。

  • Elastic Compute Service:2台提供叢集服務的ECS。

  • Virtual Private Cloud(Virtual Private Cloud):1個專用網路,提供雲上私人網路。

  • 彈性公網 IP:允許您將公網IP地址與雲端服務器、負載平衡等資源進行綁定或解除綁定。

  • 負載平衡:將來自公網或內網的訪問請求根據轉寄規則和演算法分配到後端多台伺服器上。

  • 雲端硬碟儲存卷:儲存卷掛載到容器中滿足資料的持久化儲存需求。

具體費用資訊與您選擇的資源規格有關,預估總體費用參考值約3元/時。相關計費資訊,請參見計費概述

說明

如果您未開通Container Service並授權預設角色,以及未開通相關雲產品,則可能無法正常使用Container Service及其關聯功能。建議您按照官方文檔指引完成相應配置和授權,以確保服務能夠順利運行。詳細操作,請參見快速建立ACK託管叢集。關於ACK叢集及其所使用雲資源的收費情況,請參見產品計費

  1. 開啟一鍵配置模板連結前往ROS控制台,系統自動開啟使用新資源建立資源棧的面板。在頁面最上方選擇部署地區,例如華北5(呼和浩特),然後設定配置項,單擊建立

    配置項

    說明

    樣本

    資源棧名稱

    自訂。

    stack_2023-06-12_cBesTX8FB

    叢集名稱

    自訂。

    說明

    不能與現有ACK叢集重名。

    ack-demo-cube

    可用性區域

    選中可用性區域。

    可用性區域A

    節點規格

    選擇執行個體規格組。

    可通過vCPU記憶體篩選執行個體規格,也可選擇架構分類

    例如通用型 g6

    節點系統硬碟磁碟類型

    選擇節點系統硬碟磁碟類型。

    節點系統硬碟可選的類型與選擇的執行個體規格相關。查詢執行個體規格支援的雲端硬碟類型,請參見執行個體規格類型系列。如果雲端硬碟類型下拉式清單沒有顯示的雲端硬碟類型,代表不支援該雲端硬碟類型。

    cloud_essd

    節點登入密碼

    設定節點登入密碼。

    請自行設定。

    • 資源棧資訊頁簽中,顯示狀態建立成功,表示快速建立成功。

    • 資源棧資訊頁簽中,顯示狀態不為建立成功,表示快速建立不成功。可以根據介面提示單擊建立一鍵診斷,查看詳細資料。

  2. 測試應用。

    資源棧資訊頁簽中狀態顯示為建立成功後,單擊資源棧資訊頁簽右側的輸出頁簽。然後單擊CubeAddress後的連結,即可訪問魔方遊戲。資源棧.jpeg

kubectl

1. 快速建立叢集

說明

如果您未開通Container Service並授權預設角色,以及未開通相關雲產品,則可能無法正常使用Container Service及其關聯功能。建議您按照官方文檔指引完成相應配置和授權,以確保服務能夠順利運行。詳細操作,請參見快速建立ACK託管叢集。關於ACK叢集及其所使用雲資源的收費情況,請參見產品計費

如果您是首次使用,期望快速體驗如何建立一個叢集,您可以使用叢集預設配置。如需構建一個生產環境的叢集,請參見建立ACK託管叢集

  1. 登入Container Service管理主控台叢集列表頁面,單擊建立叢集image

  2. 在上方選擇ACK 託管叢集頁簽,叢集規格選擇為Pro版,如果您有公網訪問叢集能力的需求,您可以在個人測試叢集勾選使用 EIP 暴露 API server獲得該能力,方便您的後續串連和管理叢集。然後單擊右下方的下一步:節點池配置按鈕。image

  3. 在執行個體規格中選擇任何4 vCPU、8GiB記憶體的規格,例如計算型 c6(ecs.c6.xlarge)。然後單擊右下方的下一步:組件配置按鈕。image

  4. 容器監控可選擇免費基礎版。然後單擊右下方的下一步:確認配置按鈕。image

  5. 最後單擊右下方的建立叢集按鈕,等待叢集建立完成即可。

2. 串連叢集

您可以通過kubectl、Workbench或CloudShell串連叢集。

CloudShell

如果您需要快速使用公網訪問叢集,但不想重複配置kubectl用戶端,您可以使用阿里雲提供的CloudShell網頁版命令列工具。在CloudShell啟動時會自動為您分配一台Linux虛擬機器供您免費使用。該虛擬機器已預裝多種常用環境與工具,配合CloudShell提供的Web IDE,輔助您完成日常的雲資源管理。本步驟指導您如何通過CloudShell快速串連到ACK叢集。更多資訊,請參見在CloudShell上通過kubectl管理Kubernetes叢集

登入Container Service管理主控台在控制台左側導覽列,單擊目的地組群叢集資訊頁面中,選擇基本資料 > 通過CloudShell管理叢集

image

等待數秒啟動成功之後,您就可以在CloudShell介面通過kubectl命令來管理叢集和應用。

kubectl用戶端

如果您需要使用公網機器訪問叢集,您可以為該機器安裝設定kubectl用戶端,使用該工具通過公網機器直接存取叢集。本步驟指導您如何通過kubectl用戶端快速串連到ACK叢集。更多資訊,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集

  1. 安裝和設定 kubectl用戶端。有關詳細資料請參見安裝和設定 kubectl

  2. 登入Container Service管理主控台在控制台左側導覽列,單擊叢集在叢集列表頁面中,單擊目的地組群名稱(即ACK-Demo)。叢集資訊頁面,單擊串連資訊頁簽,複製公網訪問頁簽下的內容(即叢集的公網訪問憑證)。將複製的叢集憑證內容粘貼至$HOME/.kube目錄下的config檔案中,儲存並退出。image

    說明

    如果用戶端機器$HOME/目錄下沒有.kube目錄和config檔案,請自行建立。

  3. 執行kubectl命令驗證叢集的連通性。

    以查詢命名空間為例,執行以下命令。

    kubectl get namespace

    預期輸出:

    NAME              STATUS   AGE
    arms-prom         Active   4h39m
    default           Active   4h39m
    kube-node-lease   Active   4h39m
    kube-public       Active   4h39m
    kube-system       Active   4h39m

Workbench

如果您不需要使用公網訪問叢集,您可以使用阿里雲提供的瀏覽器遠端連線工具Workbench,使用該工具,您無需額外安裝任何軟體即可通過瀏覽器直接存取ACK叢集。詳細操作,請參見通過Workbench串連執行個體

登入Container Service管理主控台在控制台左側導覽列,單擊目的地組群叢集資訊頁面中,選擇基本資料 > 通過Workbench管理叢集

image

等待數秒啟動成功之後,根據頁面指引您就可以在Workbench介面中,通過kubectl命令來管理叢集和應用。

3. 部署並公開應用

本步驟指導您如何通過kubectl在新建立的ACK叢集中快速部署一個無狀態應用(Deployment),並將其通過LoadBalancer類型服務(Service)公開。關於服務公開的詳細操作,請參見通過使用自動建立負載平衡的服務公開應用

  1. 使用以下樣本應用的YAML內容,建立名為ack-cube.yaml的檔案。

    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: ack-cube #應用程式名稱。
      labels:
        app: ack-cube
    spec:
      replicas: 2 #設定副本數量。
      selector:
        matchLabels:
          app: ack-cube  #對應服務中Selector的值需要與其一致,才可以通過服務公開此應用。
      template:
        metadata:
          labels:
            app: ack-cube
        spec:
          containers:
          - name: ack-cube
            image: registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0 #替換為您實際的鏡像地址,格式為:<image_name:tags>。
            ports:
            - containerPort: 80 #需要在服務中暴露該連接埠。
            resources:
              limits: #設定資源限制。
                cpu: '1'
                memory: 1Gi
              requests: #設定所需資源
                cpu: 500m
                memory: 512Mi        
  2. 執行以下命令,部署Demo應用ack-cube。

    kubectl apply -f ack-cube.yaml
  3. 執行以下命令,確認樣本應用狀態正常。

    kubectl get deployment ack-cube

    預期輸出:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    ack-cube   2/2     2            2           96s
  4. 使用以下樣本服務的YAML內容,建立名為ack-cube-svc.yaml的檔案。將selector修改為ack-cube.yaml樣本應用檔案中matchLabels的值(本樣本為app: ack-cube),從而將該服務關聯至後端應用。

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: ack-cube
      name: ack-cube-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: ack-cube # 需要與Deployment YAML檔案中的matchLabels的值一致。
      type: LoadBalancer
  5. 執行以下命令建立名為ack-cube-svc的服務,並通過其公開應用。

    ACK會自動建立一個公網SLB,並將其綁定至該服務。

    kubectl apply -f ack-cube-svc.yaml
  6. 執行以下命令確認LoadBalancer類型的服務建立成功。

    樣本應用將通過EXTERNAL-IP欄位的IP地址向公網公開。

    kubectl get svc ack-cube-svc

    預期輸出:

    NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    ack-cube-svc   LoadBalancer   172.16.72.161   47.94.xx.xx   80:31547/TCP   32s

(可選)釋放資源

使用ACK叢集Pro版所產生的費用包括兩部分:叢集管理費用(由ACK收取),以及所使用的其他阿里雲雲產品資源費用(由各雲產品收取)。

如果您無需繼續使用叢集,請登入Container Service管理主控台,在叢集列表頁面的操作列,單擊目的地組群對應的更多 > 刪除。在刪除叢集及關聯資源頁面,可選擇刪除叢集關聯資源,然後單擊刪除即可。關於刪除ACK叢集的更多資訊,請參見刪除叢集

image

相關文檔

  • 如果您業務的資源需求不易預測或有周期性變化,例如Web應用、遊戲服務、線上教育等情境,推薦您在叢集中配置Auto Scaling,包括工作負載伸縮和計算資源伸縮,請參見Auto Scaling概述

  • 除了通過Service公開應用,您還可以通過路由Ingress實現對應用的七層網路路由控制請參見建立Nginx Ingress

  • 除了觀測容器效能,您還可以觀測叢集基礎設施、應用效能和使用者業務,監控和日誌兩部分,通過監控功能查看系統的運行狀態,通過日誌協助問題的排查和診斷,請參見可觀測性體系概述