ACK叢集提供高效能的容器化應用管理服務,讓您輕鬆高效地在雲端運行容器化應用。本文帶您快速體驗如何在ACK叢集中通過叢集控制台頁面或kubectl用戶端快速部署並公開一個容器化Demo應用,即魔方遊戲,並監控應用的運行情況。
教程概覽
本教程所使用的樣本應用ACK-Cube為一個線上魔方遊戲,該遊戲通過容器鏡像部署到ACK託管叢集Pro版中。完成本教程後,您將建立一個魔方遊戲應用,流程如下。
開通授權並建立ACK叢集:快速完成開通授權並建立ACK叢集。
部署魔方遊戲應用:從兩種部署方式中選擇一種來部署遊戲,包括控制台介面部署、kubectl部署。
公網訪問應用:應用配置完成後,擷取ack-cube服務的外部IP地址(External IP),並通過外部IP地址訪問魔方遊戲。
1. 快速建立叢集
當您首次使用ACK時,您需要開通並授權Container ServiceACK,然後建立叢集,在叢集中部署魔方應用。如果您未開通Container Service並授權預設角色,以及未開通相關雲產品,則可能無法正常使用Container Service及其關聯功能。建議您按照官方文檔指引完成相應配置和授權,以確保服務能夠順利運行。詳細操作,請參見快速建立ACK託管叢集。關於ACK叢集及其所使用雲資源的收費情況,請參見產品計費。
建立ACK託管叢集時,您可以選擇開啟智能託管模式。開啟後,您僅需進行簡單的規劃配置,即可一鍵建立符合最佳實務的ACK叢集。該叢集會預設建立一個智能託管節點池,其中的節點生命週期將由ACK進行託管和營運。更多資訊,請參見建立ACK託管叢集(智能託管模式)。
如果您需要對叢集進行詳細自訂配置,可參見建立ACK託管叢集的完整流程來完成叢集建立。
登入Container Service管理主控台。在叢集列表頁面,單擊建立叢集。

在上方選擇ACK 託管叢集頁簽,單擊開啟智能託管,如果您有公網訪問叢集能力的需求,您可以在個人測試叢集勾選使用 EIP 暴露 API server獲得該能力,方便您的後續串連和管理叢集。然後單擊確認配置,檢查所選配置後單擊建立叢集。

2. 部署應用
您可以通過控制台、kubectl工具手動設定應用參數部署魔方遊戲。
控制台介面部署:通過控制台部署並公開應用、訪問應用。
kubectl部署:通過kubectl工具串連叢集(CloudShell、kubectl用戶端、Workbench)、部署公開應用、訪問應用。
本文中的樣本中使用了一個公網鏡像,拉取公網鏡像需要叢集或節點具備公網訪問能力:
為叢集開啟訪問公網的能力(推薦):為叢集所在的VPC建立公網NAT Gateway,使叢集中的所有資源獲得公網訪問能力。
為節點分配固定公網IP:擁有公網IP的節點即可拉取公網鏡像。但您需要為部署工作負載的每一個節點都分配公網IP。
控制台部署
2.1 部署並公開應用
本步驟指導您如何在新建立的ACK叢集中快速部署一個無狀態工作負載(Deployment),即魔方遊戲,並將該應用向公網公開。關於建立Deployment的詳細參數描述,請參見建立無狀態工作負載Deployment。
在叢集列表頁面中,單擊目的地組群名稱(即ACK-Demo)。
在叢集管理頁左側導覽列,選擇。
在無狀態頁面,單擊使用鏡像建立。
在應用基本資料頁簽,設定應用程式名稱為ack-cube。
單擊下一步,在容器配置頁簽,配置容器的相關參數。

配置項
說明
樣本值
鏡像名稱
直接輸入鏡像名稱。
輸入
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。
單擊下一步,在進階配置頁簽,單擊服務(Service)建立。在彈出的建立服務對話方塊中,設定服務的相關參數公開ack-cube應用,服務(Service)配置完成後單擊確定即可。

配置項
說明
樣本值
名稱
輸入服務的名稱。
ack-cube-svc
類型
選擇服務類型,即服務訪問的方式。依次選擇負載平衡 > 傳統型負載平衡CLB > 建立資源,在個人測試環境CLB資源保持預設即可。
使用預設設定。
連接埠
設定服務連接埠和容器連接埠。容器連接埠需要與後端的Pod中暴露的容器連接埠一致。
服務連接埠:80。
容器連接埠:80。
協議:TCP。
工作負載相關參數配置完成後,單擊建立即可。建立成功後,預設進入建立完成頁面,會列出應用程式套件含的對象,您可以單擊查看應用詳情進行查看。

2.2 訪問應用
本步驟指導您如何通過服務(Service)來訪問新部署的容器化應用。
登入Container Service管理主控台,在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。找到命名空間為default,名稱為ack-cube的應用。單擊訪問方式頁簽,找到新建立的服務(即ack-cube-svc),單擊外部端點列的連結,即可訪問魔方遊戲。
kubectl部署
2.1 串連叢集
您可以通過kubectl、Workbench或CloudShell串連叢集。
CloudShell
在CloudShell啟動時會自動為您分配一台Linux虛擬機器供您免費使用。該虛擬機器已預裝多種常用環境與工具,配合CloudShell提供的Web IDE,輔助您完成日常的雲資源管理。本步驟指導您如何通過CloudShell快速串連到ACK叢集。更多資訊,請參見在Workbench或CloudShell上使用kubectl串連叢集。
登入Container Service管理主控台。在控制台左側導覽列,單擊目的地組群。在叢集資訊頁面中,選擇。
等待數秒啟動成功之後,您就可以在CloudShell介面通過kubectl命令來管理叢集和應用。
Workbench
您可以使用阿里雲提供的瀏覽器遠端連線工具Workbench,使用該工具,您無需額外安裝任何軟體即可通過瀏覽器直接存取ACK叢集。詳細操作,請參見通過Workbench串連執行個體。
登入Container Service管理主控台。在控制台左側導覽列,單擊目的地組群。在叢集資訊頁面中,選擇。
等待數秒啟動成功之後,根據頁面指引您就可以在Workbench介面中,通過kubectl命令來管理叢集和應用。
kubectl用戶端
如果您需要使用公網機器訪問叢集,您可以為該機器安裝設定kubectl用戶端,使用該工具通過公網機器直接存取叢集。本步驟指導您如何通過kubectl用戶端快速串連到ACK叢集。更多資訊,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
安裝和設定 kubectl用戶端。有關詳細資料請參見安裝和設定 kubectl。
登入Container Service管理主控台。在控制台左側導覽列,單擊叢集。在叢集列表頁面中,單擊目的地組群名稱(即ACK-Demo)。在叢集資訊頁面,單擊串連資訊頁簽,複製公網訪問頁簽下的內容(即叢集的公網訪問憑證)。將複製的叢集憑證內容粘貼至$HOME/.kube目錄下的config檔案中,儲存並退出。
說明如果用戶端機器$HOME/目錄下沒有.kube目錄和config檔案,請自行建立。
執行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
2.2 部署並公開應用
本步驟指導您如何通過kubectl在新建立的ACK叢集中快速部署一個無狀態工作負載(Deployment),並將其通過LoadBalancer類型服務(Service)公開。關於服務公開的詳細操作,請參見通過使用自動建立負載平衡的服務公開應用。
使用以下樣本應用的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執行以下命令,部署Demo應用ack-cube。
kubectl apply -f ack-cube.yaml執行以下命令,確認樣本應用狀態正常。
kubectl get deployment ack-cube預期輸出:
NAME READY UP-TO-DATE AVAILABLE AGE ack-cube 2/2 2 2 96s使用以下樣本服務的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執行以下命令建立名為ack-cube-svc的服務,並通過其公開應用。
ACK會自動建立一個公網SLB,並將其綁定至該服務。
kubectl apply -f ack-cube-svc.yaml執行以下命令確認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(47.94.xx.xx)地址輸入瀏覽器地址欄,即可訪問魔方遊戲應用。
3.(可選)釋放資源
使用ACK託管叢集Pro版所產生的費用包括兩部分:叢集管理費用(由ACK收取),以及所使用的其他阿里雲雲產品資源費用(由各雲產品收取)。
如果您無需繼續使用叢集,請登入Container Service管理主控台,在叢集列表頁面的操作列,單擊目的地組群對應的更多 > 刪除。在刪除叢集及關聯資源頁面,您可選擇刪除叢集關聯資源,然後單擊刪除即可。關於刪除ACK叢集的更多資訊,請參見刪除叢集。
智能託管叢集預設啟用了刪除保護功能。在刪除叢集前,請先關閉叢集刪除保護狀態。

相關文檔
如果您業務的資源需求不易預測或有周期性變化,例如Web應用、遊戲服務、線上教育等情境,推薦您在叢集中配置Auto Scaling,包括工作負載伸縮和計算資源伸縮,請參見Auto Scaling。
除了通過Service公開應用,您還可以通過路由Ingress實現對應用的七層網路路由控制,請參見Ingress管理。
除了觀測容器效能,您還可以觀測叢集基礎設施、應用效能和使用者業務,監控和日誌兩部分,通過監控功能查看系統的運行狀態,通過日誌協助問題的排查和診斷,請參見可觀測性。