作者:元毅、莊宇
如何打造云上(公共云)、云下(IDC 數據中心)統一的云原生 Serverless 應用平臺,首先我們來看一下 ChatGPT 4 會給出什么樣的答案:
如何打造云上、云下統一的云原生 Serverless 應用平臺?
打造云上、云下統一的云原生 Serverless 應用平臺需要考慮幾個關鍵要素,包括技術架構設計、開發生態系統的構建、以及運維管理等多個方面的協同工作。以下是一些步驟和建議:
1. 統一的 API 和服務界面:
為了實現云上云下的一體化,需要定義統一的 API 和服務界面,確保不同環境中的應用可以無縫遷移和互操作。
2. 容器化:
利用容器技術(如 Docker)將應用打包,使得它們可以在任意環境中以相同的方式運行。
3. Kubernetes:
采用 Kubernetes 作為容器編排工具,以便在云上云下實現一致的應用部署、管理和擴縮能力。
4. 服務網格:
利用服務網格技術(如 Istio)來管理服務間通信,實現復雜微服務架構中的服務發現、負載均衡、故障處理和安全性。
5. Serverless 框架:
選擇或開發適合的 Serverless 框架(如 Knative 或 OpenFaaS),以提供無服務架構的能力,如事件驅動、自動擴縮容等。
6. 開發者平臺和 CI/CD:
構建一個集成了開發、測試、部署工具的平臺,并采用 CI/CD 流程自動化代碼的集成和部署。
7. 分布式云和混合云策略:
確保平臺支持分布式云和混合云策略,這樣應用既可以在公有云上運行,也可以在私有云或者邊緣計算環境中運行。
8. 數據一致性和存儲解決方案:
設計高效的數據存儲和同步機制,確保云上云下數據的一致性和可靠性。
9. 監控和日志:
集成監控和日志系統,以便實時跟蹤應用狀態并在必要時進行調試或故障排除。
10. 安全性:
確保系統滿足安全要求,包括網絡安全、數據加密、訪問控制以及合規性。
11. 用戶和開發者文檔:
提供詳細的用戶和開發者文檔,幫助用戶理解平臺的使用方法和最佳實踐。
12. 社區和生態系統:
構建一個強大的社區和生態系統,鼓勵開發者參與,貢獻代碼,共同改進平臺。通過上述步驟,你可以創建一個能夠平滑地在云上云下運行的 Serverless 應用平臺,減少運維壓力,加快應用的交付速度,并提升應用的可擴展性和彈性。
是不是感覺 AI 回答的很全面,沒錯,不過總結來說上面的回答其實關鍵就 2 點:分布式云/混合云策略以及標準化的技術方案。
分布式云趨勢
根據 Gartner 報告中,到 2025 年,50% 的大型企業將在他們選擇的地域通過『分布式云』服務實現業務模式轉型。另外根據 IDC 報告中,2021 年 86% 企業采用分布式云混合云架構,僅有 14% 客戶選擇單獨公共云。Gartner 報告指出,安全、運維復雜性、財務復雜性是分布式云架構的主要挑戰。
客戶的訴求
- 技術選型的訴求:如何選擇標準化的 Serverless 技術方案,做到云上、云下技術棧統一
- 成本的訴求:如何降低資源以及運維成本
- 穩定性的訴求:如何保證服務運行的穩定性
- 彈性訴求:云下 IDC 集群也可以彈性擴展資源,無限擴容 Serverless 應用
為什么是 Knative
Knative 是一款基于 Kubernetes 的開源 Serverless 應用編排框架, 以其云原生、跨平臺的 Serverless 應用編排優勢,成為廣受歡迎的開源 Serverless 框架。
作為一個通用的 Serverless 框架,Knative 由 3 個核心組件組成:
- Serving: 管理 Serverless 工作負載,可以和事件很好地結合,并提供基于請求驅動的自動擴縮容的能力。在沒有服務需要處理時,可縮容至零個實例。Serving 組件的職責是管理工作負載以對外提供服務。自動伸縮是 Knative Serving 組件最為重要的特性之一,目前伸縮邊界無限制。同時,Knative Serving 還支持灰度發布。
- Eventing: 提供了事件的接入、觸發等一整套事件管理的能力。Eventing 組件針對 Serverless 事件驅動模式具備一套完整的設計,包括外部事件源的接入、事件注冊和訂閱、以及對事件的過濾等功能。事件模型可以有效地解耦生產者和消費者的依賴關系。生產者可以在消費者啟動之前產生事件,消費者也可以在生產者啟動之前監聽事件。
- Function: Knative Functions 為您提供了一個簡單的方式來創建、構建和部署Knative服務。您無需深入了解底層技術棧(如 Kubernetes、容器和 Knative),通過使用 Knative Functions,即可將無狀態、事件驅動的函數作為 Knative 服務部署到 Kubernetes 集群中。
分布式云容器平臺 ACK One
分布式云容器平臺 ACK One(Distributed Cloud Container Platform for Kubernetes)是阿里云面向混合云、多集群、分布式計算、容災等場景推出的企業級云原生平臺。
打造云上、云下統一云原生 Serverless 應用平臺
容器服務 ACK One 當前已支持托管 Knative 能力,用戶可以借助 ACK One + Knative 打造云上、云下統一云原生 Serverless 應用平臺,并通過 Knative 輕松使用云資源,云下 IDC 集群也可以彈性擴展資源,無限擴容 Serverless 應用。
優勢:
- ACK One 注冊集群接入 IDC 自建集群,提供與 ACK 一致的運維體驗
- Knative 使用體驗一致,組件免運維
- ACK One 注冊集群為 IDC 自建集群提供云上彈性能力,結合彈性容器實例 ECI,隨時按需使用云上資源
- 公共云 ACK 集群+ 云下 IDC 機房自建集群,提供更高穩定性保障
基于 ACK One+Knative 部署 LangChain-Chatchat
LangChain-Chatchat 是一個開源的利用 langchain 思想實現的基于本地知識庫的問答應用。我們看一下如何基于 ACK One + Knative 部署 LangChain-Chatchat 應用。
前提條件
- 已通過容器服務 Kubernetes 版接入一個注冊的 Kubernetes 集群。具體操作,請查看創建注冊集群 [ 1] 。
- 只支持線下集群是 Calico 路由反射模式或者 Cilium BGP 路由模式。
部署 Knative 服務
-
登錄容器服務管理控制臺 [ 2] ,在左側導航欄選擇集群。
-
在集群列表頁面,單擊目標注冊集群名稱,然后在左側導航欄,選擇應用 > Knative。
-
在?Knative?頁面的服務管理頁簽下,選擇命名空間為?default,然后單擊使用模板創建,將以下 YAML 示例粘貼至模板,最后單擊創建,創建一個名為?knative-llc-demo?的服務。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:name: knative-llc-demo
spec:template:metadata:annotations:autoscaling.knative.dev/maxScale: '100'autoscaling.knative.dev/minScale: '1'k8s.aliyun.com/eci-extra-ephemeral-storage: 80Gik8s.aliyun.com/eci-use-specs: 'ecs.gn5-c4g1.xlarge,ecs.gn5i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge'spec:containers:- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/chatchat:0.2.7imagePullPolicy: IfNotPresentports:- containerPort: 8501name: http1protocol: TCPname: lcc
在服務管理頁簽,獲取服務的訪問網關和默認域名。
- 將?knative-llc-demo?服務的網關地址與需要訪問的域名進行 Host 綁定,在 Hosts 文件中添加綁定信息。綁定示例如下:
39.104.58.99 knative-llc-demo.default.example.com # 網關IP和域名請以您的實際數據為準。
- 完成 Host 綁定后,在服務管理頁簽,單擊?knative-llc-demo?服務的默認域名,訪問 LangChain-Chatchat。如圖所示,可通過域名直接對 LangChain-Chatchat 進行訪問。
小結
當前阿里云容器服務 ACK One 已支持托管 Knative 能力,為云上、云下提供標準化的 Serverless 應用能力。通過 ACK One 注冊集群接入 IDC 自建集群,提供與 ACK 一致的運維體驗,并獲得云上彈性能力,結合彈性容器實例 ECI,隨時按需使用云上資源,無限擴展 Serverless 應用。想獲得詳細介紹,可閱讀阿里云 ACK One 注冊集群 [ 3] 和 ACK One Knative [ 4] 。
歡迎使用釘釘搜索 ACK One 客戶交流群的群號:35688562?或 Knative 交流群:23302777?加入我們。
參考鏈接:
[1]?創建 ACK One 注冊集群
https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/create-a-cluster-registration-proxy-and-register-a-kubernetes-cluster-deployed-in-a-data-center
[2]?容器服務管理控制臺
https://cs.console.aliyun.com
[3]?阿里云 ACK One 注冊集群
https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-9
[4]?ACK One 注冊集群 Knative*
https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/knative-overview*