全部產品
Search
文件中心

Container Service for Kubernetes:通過kubectl快速搭建魔方遊戲

更新時間:Oct 25, 2024

Container Service for Kubernetes (ACK)提供高效能的容器化應用管理服務,讓您輕鬆高效地在雲端運行Kubernetes容器化應用。本文將指導您如何通過kubectl在ACK叢集中快速部署並公開一個容器化Demo應用,並監控應用的運行情況。

背景資訊

  • 本教程中所使用的Demo應用ACK-Cube為一個線上魔方遊戲,該遊戲將通過容器鏡像部署到ACK Pro版叢集中。完成本教程後,您將得到一個ACK Pro版叢集和魔方遊戲應用。cube
  • Demo應用的容器鏡像基於開源專案構建,鏡像地址為registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0
  • Kubectl是標準的Kubernetes命令列管理工具,通過kubectl可以串連和管理ACK叢集。關於kubectl命令列的更多資訊,請參見kubectl

  • CloudShell是阿里雲推出的雲命令列工具,您可以在Container ServiceACK控制台上開啟CloudShell,無需任何安裝或配置操作,可以直接在CloudShell中通過kubectl管理叢集。

  • 已瞭解Kubernetes的相關基本概念,請參見基本概念

操作流程

workflow-kubectl

步驟一:開通並授權Container ServiceACK

首次使用時,您需要開通Container ServiceACK,並為其授權相應雲資源的存取權限。

  1. 登入Container ServiceACK開通頁面

  2. 仔細閱讀並選中Container ServiceACK服務合約,然後單擊立即開通

  3. 登入Container Service管理主控台

  4. Container Service需要建立預設角色頁面,單擊前往RAM進行授權進入雲資源訪問授權頁面,然後單擊同意授權

    完成以上授權後,重新整理控制台即可使用Container ServiceACK。如在授權過程中遇到其他問題,請參見授權管理FAQ

步驟二:建立ACK Pro版叢集

本步驟介紹如何通過配置主要參數快速建立一個ACK Pro版叢集。關於配置項的詳細資料,請參見建立ACK Pro版叢集

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊頁面右上方的建立叢集

  3. ACK 託管版頁簽下,配置以下配置項。未說明配置項保留預設設定即可。

    配置項

    說明

    樣本

    叢集名稱

    填寫叢集的名稱。

    ACK-Demo

    叢集規格

    選擇叢集規格,支援Pro 版基礎版。企業生產和測試環境中推薦使用ACK叢集Pro版ACK叢集基礎版僅供個人學習與測試使用。

    關於ACK Pro版叢集的詳細資料,請參見ACK叢集Pro版概述

    Pro版

    地區

    選擇叢集所在的地區。

    華北2(北京)

    專用網路

    Kubernetes叢集僅支援運行於專用網路,因此您需要為叢集指定Virtual Private Cloud,且該VPC必須與叢集處於同一地區。

    通過單擊建立專用網路,在華北2(北京)地區下建立名為vpc-ack-demo的VPC。詳細資料,請參見建立和管理專用網路

    vpc-ack-demo

    虛擬交換器

    選擇用於叢集節點間通訊的交換器。

    通過單擊建立虛擬交換器,在vpc-ack-demo的VPC下建立一個名為vswitch-ack-demo的虛擬交換器,並選擇使用該交換器。詳細資料,請參見建立和管理交換器

    vswitch-ack-demo

    API Server 訪問

    設定叢集API Server是否可在公網訪問,當您需要從公網遠端管理叢集時,需要配置Elastic IP Address(EIP)。

    選中使用 EIP 暴露 API Server

  4. 單擊下一步:節點池配置,配置以下配置項。未說明配置項保留預設設定即可。

    配置項

    說明

    樣本

    執行個體規格

    為叢集選配所使用的節點。

    您可通過設定vCPU記憶體的大小,或者直接搜尋執行個體規格,選用該規格的節點。

    為了保證叢集的穩定性,建議的執行個體規格為:vCPU≥4核,記憶體≥8 GiB。關於如何選型以及規格介紹,請參見ECS選型推薦配置執行個體規格類型系列

    vCPU≥4核,記憶體≥8 GiB的執行個體規格

    數量

    根據需要設定叢集的節點數量。

    2

    系統硬碟

    選擇節點所使用的系統硬碟。

    ESSD雲端硬碟,40 GiB

    登入方式

    選擇登入節點的方式。

    請自行設定密碼。

  5. 單擊下一步:組件配置,所有組件使用預設配置。

  6. 單擊下一步:確認配置,然後選中並閱讀服務合約,單擊建立叢集

    說明

    叢集的建立時間一般約為10分鐘。建立完成後,在叢集列表頁面,可以看到新建立的叢集。

步驟三:串連叢集

本步驟指導您如何通過kubectl用戶端或CloudShell快速串連到ACK叢集。更多資訊,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集在CloudShell上通過kubectl管理Kubernetes叢集

方式一:通過kubectl用戶端串連叢集

  1. 登入Container Service管理主控台

  2. 在控制台左側導覽列,單擊叢集

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

  4. 叢集資訊頁面,單擊串連資訊頁簽,複製公網訪問頁簽下的內容(即叢集的公網訪問憑證)。

  5. 將複製的叢集憑證內容粘貼至$HOME/.kube目錄下的config檔案中,儲存並退出。

    說明

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

  6. 執行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

方式二:通過CloudShell串連叢集

  1. 登入Container Service管理主控台

  2. 在控制台左側導覽列,單擊叢集

  3. 在叢集列表頁面中,選擇目的地組群右側操作列下的更多 > 通過CloudShell管理叢集

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

步驟四:部署並公開應用

本步驟指導您如何通過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

步驟五:測試應用

在瀏覽器地址欄輸入該服務EXTERNAL-IP欄位的IP地址,即可開始魔方遊戲。

釋放資源

使用ACK Pro版叢集所產生的費用包括兩部分。一部分是叢集管理費用,由Container ServiceACK收取。另一部分是所使用的其他阿里雲雲產品資源費用,按照各雲產品規定的計費規則計費,由各雲產品收取。完成快速入門後,請參考以下情境處理叢集。

  • 如果無需繼續使用叢集,請登入Container Service管理主控台,在叢集列表頁面的操作列,單擊目的地組群對應的更多 > 刪除。在刪除叢集頁面,選中同時刪除叢集下的ALB資源同時刪除叢集下的PrivateZone資源同時刪除叢集管理關聯的SLS專案我已知曉以上資訊並確認刪除叢集,然後單擊確定。關於刪除ACK Pro版叢集的更多資訊,請參見刪除叢集

  • 如果需要繼續使用叢集,請為阿里雲帳號儲值,確保賬戶金額不小於100.00元人民幣。在使用ACK Pro版叢集過程中用到的其他阿里雲雲產品資源,相關計費說明,請參見雲產品資源計費

相關文檔

  • 為了保證應用能夠動態調整所需容器資源,您可以配置容器水平伸縮(HPA)、定時容器水平伸縮(CronHPA)、容器垂直伸縮(VPA)等。詳細資料,請參見Auto Scaling概述

  • 除了通過服務(Service)公開應用,您還可以通過路由(Ingress)實現對應用的七層網路路由控制。詳細資料,請參見建立Nginx Ingress

  • 除了觀測容器效能,您還可以觀測叢集基礎設施、應用效能和使用者業務。詳細資料,請參見可觀測性體系概述

  • 監控應用的健全狀態,如CPU使用率、記憶體利用率、網路I/O壓力等指標,請在叢集管理頁左側導覽列,選擇營運管理>Prometheus監控,在Prometheus監控頁面查看。