阿里雲容器計算服務ACS提供高效能的容器計算服務,助力輕鬆高效地在雲端運行Kubernetes容器化應用。本文將指導如何通過kubectl在ACS叢集中快速部署並公開一個容器化Demo應用,並監控應用的運行情況。
背景資訊
本教程中所使用的Demo應用ACK-Cube為一個線上魔方遊戲,該遊戲將通過容器鏡像部署到ACS叢集中。完成本教程後,將得到一個ACS叢集和魔方遊戲應用。

Demo應用的容器鏡像基於開源專案構建,鏡像地址為
registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube。kubectl是標準的Kubernetes命令列管理工具,通過kubectl可以串連和管理ACS叢集。關於kubectl命令列的更多資訊,請參見kubectl。
CloudShell是阿里雲推出的雲命令列工具,可以在容器計算服務控制台上開啟CloudShell,無需任何安裝或配置操作,可以直接在CloudShell中通過kubectl管理叢集。
操作流程
步驟一:開通並授權容器計算服務ACS
首次使用時,需要開通容器計算服務ACS,並為其授權相應雲資源的存取權限。
登入容器計算服務控制台,單擊前往開通。
前往容器計算服務ACS開通頁面,按提示完成產品授權開通。
返回容器計算服務管理主控台並重新整理頁面,單擊前往授權。
前往容器計算服務授權頁面,按提示完成產品授權。
完成以上授權後,重新整理控制台即可使用容器計算服務ACS。
步驟二:建立ACS叢集
本步驟介紹如何通過配置主要參數快速建立一個ACS叢集。
登入容器計算服務控制台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊頁面左上方的建立叢集。
在建立叢集頁面,進行如下配置。未說明的配置項使用預設設定即可。
配置項
說明
樣本
叢集名稱
填寫叢集的名稱。
ACS-Demo地區
選擇叢集所在的地區。
華北2(北京)
選擇專用網路
設定叢集的網路。ACS叢集僅支援專用網路。支援自動建立和使用已有的VPC。
自動建立:叢集會自動建立一個VPC,並在VPC中自動建立NAT Gateway以及配置SNAT規則。
使用已有:可在已有VPC列表中選擇所需的VPC和交換器。如需訪問公網,例如下載容器鏡像,則需要配置NAT Gateway。建議將容器鏡像上傳到叢集所在地區的阿里雲Container Registry(ACR),並通過內網VPC地址拉取鏡像。
詳細資料,請參見建立和管理專用網路。
選擇自動建立
API server 訪問配置
設定叢集API server是否可在公網訪問,當需要從公網遠端管理叢集時,需要配置Elastic IP Address(EIP)。
選中使用 EIP 暴露 API server
服務發現
單擊顯示進階選項下拉框,設定是否開啟叢集服務發現能力。如需服務發現能力,可選擇開啟CoreDNS託管。
選擇CoreDNS託管
單擊確認配置,然後選中並閱讀服務合約,單擊建立叢集。
說明叢集的建立時間一般約為10分鐘。建立完成後,在叢集列表頁面,可以看到新建立的叢集。
步驟三:串連叢集
本步驟指導如何通過kubectl用戶端或CloudShell快速串連到ACS叢集。更多資訊,請參見擷取叢集kubeconfig並通過kubectl工具串連叢集和在CloudShell上通過kubectl管理Kubernetes叢集。
通過kubectl用戶端串連叢集
登入容器計算服務控制台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱(即ACS-Demo)。
在叢集資訊頁面,單擊串連資訊頁簽,單擊擷取臨時KubeConfig,複製公網訪問頁簽下的內容(即叢集的公網訪問憑證)。
將複製的叢集憑證內容粘貼至
$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
通過CloudShell串連叢集
確保已為叢集開通API Server的公網訪問能力
登入容器計算服務控制台,在左側導覽列選擇叢集列表。
在叢集列表頁面,選擇目的地組群右側操作列下的。
等待數秒啟動成功後,可在CloudShell介面通過kubectl命令來管理叢集和應用。
步驟四:部署並公開應用
本步驟指導如何通過kubectl在新建立的ACS叢集中快速部署一個無狀態應用(Deployment),並將其通過LoadBalancer類型服務(Service)公開。關於服務公開的具體操作,請參見通過使用自動建立負載平衡的服務公開應用。
使用以下樣本應用的YAML內容,建立名為acs-cube.yaml的檔案。
執行以下命令,部署Demo應用acs-cube。
kubectl apply -f acs-cube.yaml執行以下命令,確認樣本應用狀態正常。
kubectl get deployment acs-cube預期輸出:
NAME READY UP-TO-DATE AVAILABLE AGE acs-cube 2/2 2 2 96s使用以下樣本服務的YAML內容,建立名為acs-cube-svc.yaml的檔案。
確保
selector值和acs-cube.yaml中matchLabels值保持一致(本樣本為app: acs-cube),從而將該服務關聯至後端應用。apiVersion: v1 kind: Service metadata: labels: app: acs-cube name: acs-cube-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: acs-cube # 需要與Deployment YAML檔案中的matchLabels的值一致。 type: LoadBalancer執行以下命令,建立名為acs-cube-svc的服務,並通過其公開應用。
ACS會自動建立一個公網SLB,並將其綁定至該服務。
kubectl apply -f acs-cube-svc.yaml執行以下命令,確認LoadBalancer類型的服務是否建立成功。
樣本應用將通過EXTERNAL-IP欄位的IP地址向公網公開。
kubectl get svc acs-cube-svc預期輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE acs-cube-svc LoadBalancer 172.16.72.161 47.94.xx.xx 80/TCP 32s
步驟五:測試應用
在瀏覽器地址欄輸入該服務EXTERNAL-IP欄位的IP地址,即可開始魔方遊戲。

相關文檔
為了保證應用能夠動態調整所需容器資源,可以配置容器水平伸縮(HPA)和定時容器水平伸縮(CronHPA)。更多資訊,請參見Auto Scaling概述。
除了通過服務(Service)公開應用,還可以通過路由(Ingress)實現對應用的七層網路路由控制。具體操作,請參見ALB Ingress快速入門。
可以在Prometheus監控頁面查看應用的健全狀態,例如CPU使用率、記憶體利用率、網路I/O壓力等指標。具體操作,請參見使用阿里雲Prometheus監控ACS叢集狀態。
釋放資源
使用ACS叢集所產生的費用包括以下兩部分:
建立工作負載使用的算力,由容器計算服務ACS收取。
使用的其他阿里雲雲產品資源費用,按照各雲產品規定的計費規則計費,由各雲產品收取。
完成快速入門後,請參考以下情境處理叢集。