<article class=“article fmt article-content”><p>作者:元毅、庄宇</p><p>如何打造云上(公共云)、云下(IDC 数据中心)对立的云原生 Serverless 利用平台,首先咱们来看一下 ChatGPT 4 会给出什么样的答案:</p><p>如何打造云上、云下对立的云原生 Serverless 利用平台?</p><pre><code>打造云上、云下对立的云原生 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 利用平台,缩小运维压力,放慢利用的交付速度,并晋升利用的可扩展性和弹性。</code></pre><p>是不是感觉 AI 答复的很全面,没错,不过总结来说下面的答复其实要害就 2 点:分布式云/混合云策略以及标准化的技术计划。</p><h2>分布式云趋势</h2><p>依据 Gartner 报告中,到 2025 年,50% 的大型企业将在他们抉择的地区通过『分布式云』服务实现业务模式转型。另外依据 IDC 报告中,2021 年 86% 企业采纳分布式云混合云架构,仅有 14% 客户抉择独自公共云。Gartner 报告指出,平安、运维复杂性、财务复杂性是分布式云架构的次要挑战。</p><p></p><h2>客户的诉求</h2><ul><li>技术选型的诉求:如何抉择标准化的 Serverless 技术计划,做到云上、云下技术栈对立</li><li>老本的诉求:如何升高资源以及运维老本</li><li>稳定性的诉求:如何保障服务运行的稳定性</li><li>弹性诉求:云下 IDC 集群也能够弹性扩大资源,有限扩容 Serverless 利用</li></ul><h2>为什么是 Knative</h2><p>Knative 是一款基于 Kubernetes 的开源 Serverless 利用编排框架, 以其云原生、跨平台的 Serverless 利用编排劣势,成为广受欢迎的开源 Serverless 框架。</p><p>作为一个通用的 Serverless 框架,Knative 由 3 个外围组件组成:</p><ul><li><strong>Serving:</strong> 治理 Serverless 工作负载,能够和事件很好地联合,并提供基于申请驱动的主动扩缩容的能力。在没有服务须要解决时,可缩容至零个实例。Serving 组件的职责是管理工作负载以对外提供服务。主动伸缩是 Knative Serving 组件最为重要的个性之一,目前伸缩边界无限度。同时,Knative Serving 还反对灰度公布。</li><li><strong>Eventing:</strong> 提供了事件的接入、触发等一整套事件治理的能力。Eventing 组件针对 Serverless 事件驱动模式具备一套残缺的设计,包含内部事件源的接入、事件注册和订阅、以及对事件的过滤等性能。事件模型能够无效地解耦生产者和消费者的依赖关系。生产者能够在消费者启动之前产生事件,消费者也能够在生产者启动之前监听事件。</li><li><strong>Function:</strong> Knative Functions 为您提供了一个简略的形式来创立、构建和部署Knative服务。您无需深刻理解底层技术栈(如 Kubernetes、容器和 Knative),通过应用 Knative Functions,即可将无状态、事件驱动的函数作为 Knative 服务部署到 Kubernetes 集群中。</li></ul><p></p><h2>分布式云容器平台 ACK One</h2><p>分布式云容器平台 ACK One(Distributed Cloud Container Platform for Kubernetes)是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级云原生平台。</p><p></p><h2>打造云上、云下对立云原生 Serverless 利用平台</h2><p>容器服务 ACK One 以后已反对托管 Knative 能力,用户能够借助 ACK One + Knative 打造云上、云下对立云原生 Serverless 利用平台,并通过 Knative 轻松应用云资源,云下 IDC 集群也能够弹性扩大资源,有限扩容 Serverless 利用。</p><p></p><p><strong>劣势:</strong></p><ul><li>ACK One 注册集群接入 IDC 自建集群,提供与 ACK 统一的运维体验</li><li>Knative 应用体验统一,组件免运维</li><li>ACK One 注册集群为 IDC 自建集群提供云上弹性能力,联合弹性容器实例 ECI,随时按需应用云上资源</li><li>公共云 ACK 集群+ 云下 IDC 机房自建集群,提供更高稳定性保障</li></ul><h2>基于 ACK One+Knative 部署 LangChain-Chatchat</h2><p>LangChain-Chatchat 是一个开源的利用 langchain 思维实现的基于本地知识库的问答利用。咱们看一下如何基于 ACK One + Knative 部署 LangChain-Chatchat 利用。</p><h3>前提条件</h3><ul><li>已通过容器服务 Kubernetes 版接入一个注册的 Kubernetes 集群。具体操作,请查看创立注册集群 <strong>[</strong> <strong>1]</strong> 。</li><li>只反对线下集群是 Calico 路由反射模式或者 Cilium BGP 路由模式。</li></ul><h3>部署 Knative 服务</h3><ol><li>登录容器服务治理控制台 <strong>[</strong> <strong>2]</strong> ,在左侧导航栏抉择<strong>集群</strong>。</li><li>在<strong>集群列表</strong>页面,单击指标注册集群名称,而后在左侧导航栏,抉择<strong>利用 > Knative。</strong></li><li>在 <strong>Knative</strong> 页面的<strong>服务治理</strong>页签下,抉择<strong>命名空间</strong>为 <strong>default</strong>,而后单击<strong>应用模板创立</strong>,将以下 YAML 示例粘贴至模板,最初单击<strong>创立</strong>,创立一个名为 <strong>knative-llc-demo</strong> 的服务。</li></ol><pre><code>apiVersion: serving.knative.dev/v1kind: Servicemetadata: name: knative-llc-demospec: template: metadata: annotations: autoscaling.knative.dev/maxScale: ‘100’ autoscaling.knative.dev/minScale: ‘1’ k8s.aliyun.com/eci-extra-ephemeral-storage: 80Gi k8s.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.7 imagePullPolicy: IfNotPresent ports: - containerPort: 8501 name: http1 protocol: TCP name: lcc</code></pre><p>在<strong>服务治理</strong>页签,获取服务的<strong>拜访网关</strong>和<strong>默认域名</strong>。</p><p></p><ol><li>将 <strong>knative-llc-demo</strong> 服务的网关地址与须要拜访的域名进行 Host 绑定,在 Hosts 文件中增加绑定信息。绑定示例如下:</li></ol><pre><code>39.104.58.99 knative-llc-demo.default.example.com # 网关IP和域名请以您的理论数据为准。</code></pre><ol start=“2”><li>实现 Host 绑定后,在<strong>服务治理</strong>页签,单击 <strong>knative-llc-demo</strong> 服务的<strong>默认域名</strong>,拜访 LangChain-Chatchat。如图所示,可通过域名间接对 LangChain-Chatchat 进行拜访。</li></ol><p></p><h2>小结</h2><p>以后阿里云容器服务 ACK One 已反对托管 Knative 能力,为云上、云下提供标准化的 Serverless 利用能力。通过 ACK One 注册集群接入 IDC 自建集群,提供与 ACK 统一的运维体验,并取得云上弹性能力,联合弹性容器实例 ECI,随时按需应用云上资源,有限扩大 Serverless 利用。想取得具体介绍,可浏览阿里云 ACK One 注册集群 <strong>[</strong> <strong>3]</strong> 和 ACK One Knative <strong>[</strong> <strong>4]</strong> 。</p><p>欢送应用钉钉搜寻 ACK One 客户交换群的群号:<em>35688562</em> 或 Knative 交换群:<em>23302777</em> 退出咱们。</p><p><strong>参考链接:</strong></p><p>[1] 创立 ACK One 注册集群</p><p><em>https://help.aliyun.com/zh/ack/distributed-cloud-container-pl…</em></p><p>[2] 容器服务治理控制台</p><p><em>https://cs.console.aliyun.com</em></p><p>[3] 阿里云 ACK One 注册集群</p><p><em>https://help.aliyun.com/zh/ack/distributed-cloud-container-pl…</em></p><p>[4] ACK One 注册集群 Knative*</p><p>https://help.aliyun.com/zh/ack/distributed-cloud-container-pl…*</p></article>