阿里云容器計算服務 ACS(Container Compute Service)以Kubernetes為使用界面,采用Serverless形態提供彈性的算力資源,使您輕松高效運行容器應用。本文將指導您如何通過ACS控制臺及ACS集群證書在ACS集群中快速部署并公開一個容器化生成式AI會話應用,并監控應用的運行情況。
使用前準備
背景知識介紹
本教程所使用兩個開源項目,分別是RWKV-Runner和ChatGPT-Next-Web。RWKV-Runner是一個0.1b的大模型并提供RESTful API對外提供在線推理服務,ChatGPT-Next-Web是會話應用的WebUI。RWKV-Runner與ChatGPT-Next-Web形成前后端分離架構的生成式AI會話應用,通過容器鏡像部署到ACS集群中。完成本教程后,您將創建生成式AI會話應用。
如果您想了解更多Kubernetes相關概念,可以通過CNCF × Alibaba 云原生技術公開課深入學習Kubernetes。
操作流程
當您首次使用ACS時,您需要開通并授權容器計算服務ACS,然后創建集群,在集群中部署生成式AI應用。
步驟一:開通并授權容器計算服務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分鐘。創建完成后,在集群頁面,可以看到新創建的集群。
步驟三:使用ACS控制臺部署RWKV-Runner
本步驟指導您如何在新創建的ACS集群中使用通用型實例快速部署一個無狀態應用(Deployment)RWKV-Runner,并將該應用RESTful API在集群內公開。關于創建Deployment的詳細參數描述,請參見創建無狀態工作負載Deployment。
登錄容器計算服務控制臺,在集群頁面,單擊目標集群名稱(即ACS-Demo)。
在左側導航欄,選擇 。
在無狀態頁面,單擊使用鏡像創建。
在應用基本信息配置向導,設置應用名稱為rwkv-runner,選擇實例類型為通用型,QoS類型為default,單擊下一步。
在容器配置向導,配置容器的相關信息,單擊下一步。
配置項
說明
示例值
鏡像名稱
直接輸入不包含鏡像Tag的鏡像地址或單擊選擇鏡像來選擇所需的鏡像。
registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-runner
鏡像Tag
單擊選擇鏡像Tag選擇鏡像的版本。
1.0.0
CPU
根據需要為該應用指定所需的CPU核數。
1 Core
內存
根據需要為該應用指定所需的內存大小。
2 GiB
端口
設置容器的端口。
名稱:runner
容器端口:8000
協議:TCP
在高級配置向導,單擊服務(Service)右側的創建。
在創建服務對話框,配置以下信息,單擊創建,以通過該服務集群內發布rwkv-runner的RESTful API。
配置項
說明
示例值
名稱
輸入服務的名稱。
rwkv-runner-svc
類型
選擇服務類型,即服務訪問的方式。
虛擬集群IP
端口映射
設置服務端口和容器端口。容器端口需要與后端的Pod中暴露的容器端口一致。
名稱:runner
服務端口:80
容器端口:8000
協議:TCP
在高級配置向導,單擊右下角的創建。
創建成功后,默認進入創建完成配置向導,顯示應用包含的對象。您可以單擊查看應用詳情進行查看。
步驟四:使用ACS集群證書部署并公開ChatGPT-Next-Web
本步驟指導您如何使用ACS集群證書在新創建的ACS集群中使用通用型實例快速部署一個無狀態應用(Deployment)ChatGPT-Next-Web,并將該應用公網公開。關于創建Deployment的詳細參數描述,請參見創建無狀態工作負載Deployment。
登錄容器計算服務控制臺,在集群頁面,單擊目標集群名稱(即ACS-Demo)。
在集群信息頁面,單擊連接信息頁簽,獲取公網訪問證書,然后按頁面提示放置到相應位置。
使用以下示例應用的YAML內容,創建名為chat-next-web.yaml的文件。
apiVersion: v1 kind: Service metadata: name: chat-frontend-svc spec: ports: - name: chat port: 80 protocol: TCP targetPort: 3000 selector: app: chat-frontend type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: chat-frontend name: chat-frontend spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: chat-frontend strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: alibabacloud.com/compute-class: general-purpose # 通用型 #alibabacloud.com/compute-class: performance 性能型 app: chat-frontend spec: containers: - env: - name: BASE_URL value: 'http://rwkv-runner-svc' image: registry.cn-beijing.aliyuncs.com/acs-demo-ns/chatgpt-next-web:amd64 imagePullPolicy: IfNotPresent name: chat-frontend ports: - containerPort: 3000 protocol: TCP resources: requests: cpu: "1" memory: 2Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30
執行以下命令,將資源提交到ACS集群。
kubectl apply -f chat-next-web.yaml
步驟五:使用ACS集群證書創建應用初始任務
本步驟指導您如何使用ACS集群證書在新創建的ACS集群中使用BestEffort 算力質量的實例快速創建一個任務(Job),用于RWKV-Runner應用大模型的初始化。關于創建Job的詳細參數描述,請參見創建任務工作負載Job。
使用以下示例應用的YAML內容,創建名為rwkv-init-job.yaml的文件。
apiVersion: batch/v1 kind: Job metadata: name: job-demo spec: activeDeadlineSeconds: 600 backoffLimit: 6 completionMode: NonIndexed completions: 1 parallelism: 1 suspend: false template: metadata: labels: alibabacloud.com/compute-qos: best-effort # BestEffort型 #alibabacloud.com/compute-qos: default # 默認型 app: job-demo spec: containers: - name: job image: registry.cn-beijing.aliyuncs.com/acs-demo-ns/rwkv-init-job:1.0.0 imagePullPolicy: Always resources: requests: cpu: 500m memory: 1Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Never schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30
執行以下命令,確認初始化任務。
kubectl apply -f rwkv-init-job.yaml
執行以下命令,確認初始化任務執行完成。
kubectl get pod
預期輸出:
步驟六:測試應用
本步驟指導您如何通過服務(Service)來訪問新部署的容器化應用。
登錄容器計算服務控制臺,在集群頁面,單擊目標集群名稱(即ACS-Demo)。
在左側導航欄,選擇
。在服務頁面,找到新創建的服務(即chat-frontend-svc),單擊External IP列的IP地址,即可訪問生成式AI會話應用。
釋放資源
使用ACS集群所產生的費用包括以下兩部分:
創建工作負載使用的算力,由容器計算服務ACS收取。
使用的其他阿里云云產品資源費用,按照各云產品規定的計費規則計費,由各云產品收取。
完成快速入門后,請參考以下場景處理集群: