阿里云容器計算服務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網關以及配置SNAT規則。
使用已有:您可以在已有VPC列表中選擇所需的VPC和交換機。如需訪問公網,例如下載容器鏡像,則需要配置NAT網關。建議將容器鏡像上傳到集群所在區域的阿里云鏡像服務,并通過內網VPC地址拉取鏡像。
詳細信息,請參見創建和管理專有網絡。
選擇自動創建。
API Server 訪問配置
設置集群API Server是否可在公網訪問,當您需要從公網遠程管理集群時,需要配置彈性公網IP(EIP)。
選中使用 EIP 暴露 API Server。
服務發現
單擊顯示高級選項下拉框,設置是否開啟集群服務發現能力。當你需要服務發現能力時,需選擇開啟CoreDNS。
選擇CoreDNS。
單擊確認配置,然后選中并閱讀服務協議,單擊創建集群。
說明集群的創建時間一般約為10分鐘。創建完成后,在集群頁面,可以看到新創建的集群。
步驟三:連接集群
本步驟指導您如何通過kubectl客戶端或CloudShell快速連接到ACS集群。更多信息,請參見獲取集群KubeConfig并通過kubectl工具連接集群和在CloudShell上通過kubectl管理Kubernetes集群。
通過kubectl客戶端連接集群
登錄容器計算服務控制臺,在左側導航欄選擇集群。
在集群頁面,單擊目標集群名稱(即ACS-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
通過CloudShell連接集群
登錄容器計算服務控制臺,在左側導航欄選擇集群。
在集群頁面,選擇目標集群右側操作列下的
。等待數秒啟動成功之后,您就可以在CloudShell界面通過kubectl命令來管理集群和應用。
步驟四:部署并公開應用
本步驟指導您如何通過kubectl在新創建的ACS集群中快速部署一個無狀態應用(Deployment),并將其通過LoadBalancer類型服務(Service)公開。關于服務公開的具體操作,請參見通過使用自動創建負載均衡的服務公開應用。
使用以下示例應用的YAML內容,創建名為acs-cube.yaml的文件。
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: acs-cube # 應用名稱。 labels: app: acs-cube spec: replicas: 2 # 設置副本數量。 selector: matchLabels: app: acs-cube # 對應服務中Selector的值需要與其一致,才可以通過服務公開此應用。 template: metadata: labels: app: acs-cube spec: containers: - name: acs-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應用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)。更多信息,請參見彈性伸縮概述。
除了通過服務(Service)公開應用,您還可以通過路由(Ingress)實現對應用的七層網絡路由控制。具體操作,請參見ALB Ingress快速入門。
您可以在Prometheus監控頁面查看應用的運行狀況,例如CPU使用率、內存利用率、網絡I/O壓力等指標。具體操作,請參見使用阿里云Prometheus監控ACS集群狀態。
釋放資源
使用ACS集群所產生的費用包括以下兩部分:
創建工作負載使用的算力,由容器計算服務ACS收取。
使用的其他阿里云云產品資源費用,按照各云產品規定的計費規則計費,由各云產品收取。
完成快速入門后,請參考以下場景處理集群。