Serverless Kubernetes 落地实践

简介: Kubernetes 作为当今云原生业界标准,具备良好的生态以及跨云厂商能力。Kubernetes 很好的抽象了 IaaS 资源交付标准,使得云资源交付变的越来越简单,与此同时用户期望更多的聚焦于业务自身,做到面向应用交付,Serverless 理念也因此而生。 那么如何通过原生 k8s 提供 Serverless 能力? 如何借力丰富的云原生社区生态?这里给大家介绍一下我们在 Serverless Kubernetes 上的落地实践

导读

Kubernetes 作为当今云原生业界标准,具备良好的生态以及跨云厂商能力。Kubernetes 很好的抽象了 IaaS 资源交付标准,使得云资源交付变的越来越简单,与此同时用户期望更多的聚焦于业务自身,做到面向应用交付,Serverless 理念也因此而生。 那么如何通过原生 k8s 提供 Serverless 能力? 如何借力丰富的云原生社区生态?这里给大家介绍一下我们在 Serverless Kubernetes 上的落地实践本文将从以下 3 个方面展开介绍:

  • 为什么要做Serverless Kubernetes
  • 如何实现Serverless Kubernetes
  • Serverless Kubernetes 落地实践

为什么要做Serverless Kubernetes

Kubernetes

众所周知,Kubernetes 是一款开源容器化编排系统,用户使用K8s 可以做到降低运维成本、提高运维效率,并且提供标准化API, 某种意义就是避免被云厂商绑定,进而形成了以K8s为核心的云原生生态。可以说K8s已然成为了云原生业界事实标准。

Serverless 与 Kubernetes

那么我们回到Serverless上面来,Serverless 的核心理念在于让开发者更聚焦业务逻辑,减少对基础设施的关注。那么我们如何在云原生业界标准之上做Serverless, k8s 是否也能做到更专注于应用业务逻辑。

Kubernetes 做 Serverless 有哪些优势

我们来看一下K8s做Serverless 有什么优势。

先看一下k8s特性包括哪些:

  • 容器化
  • 统一IaaS资源交付
  • CI/CD持续集成部署
  • 跨云厂商
  • 丰富的生态
  • 面向应用管理

而对应于Serverless来说

  • 事件驱动:K8s 支持job类型、并围绕K8s提供丰富的事件源
  • 按需使用:K8s  本身支持hpa 弹性能力
  • 免运维、高可用:K8s可以通过容器化、统一资源交付很好的支持。

结合这些来看 k8s 实现serverless,天然具备优势。

如何实现Serverless Kubernetes

在Kubernetes上实现Serverless 主要做到一下两点:

第一:向下如何让用户减少对基础设施的关注

第二:线上如何更聚焦业务应用

这里我们通过Serverless Framework ,聚焦业务应用,进一步抽象K8s资源,提供按需使用自动弹性的能力。通过IaaS资源免运维,减少对基础设施的关注,做到节点免运维。

那么IaaS资源免运维,我们是如何做的呢?

减少对基础设置的关注:IaaS免运维

原生的K8s 节点资源需要用户自行维护,为了降低用户维护节点成本,我们提供了托管节点池,帮助用户维护节点的生命周期,但用户还是需要对托管节点池策略进行维护,更近一步在Serverless Kubernetes 中通过虚拟节点结合弹性容器实例ECI,让用户彻底摆脱对IaaS的运维。

Serverless Kubernetes IaaS 资源免运维包括:

  • 基于容器,安全隔离、高移植
  • 无服务器管理:无需容量规划,对服务器免运维
  • 弹性扩容:秒级扩容,无限容器
  • 按需付费,更高资源利用率

向下我们通过虚拟节点结合ECI实现了IaaS资源免运维,那么向上如何聚焦业务逻辑呢?其实就是以应用为核心。

聚焦业务逻辑:以应用为核心

围绕应用来看,无非我们要解这些问题:

  • 应用部署
  • 灰度发布
  • 流量管理
  • 自动弹性
  • 可观测性以及应用的多版本管理。

那么有开箱即用的方案去解吗?答案是Knative

Knative 是什么

Knative是基于 Kubernetes 之上提供的一款开源 Serverless 应用框架,帮助用户部署和管理现代化的 Serverless 工作负载,打造企业级 Serverless 平台。

Knative具备如下优势:

  • 在几秒钟内建立可扩展、安全、无状态的服务。
  • 具有更高级别 Kubernetes应用抽象的API。
  • 可插拔组件,让您可以使用自己的日志记录和监控、网络和服务网格。
  • 在 Kubernetes 运行的任何地方都可以运行 Knative,无需担心供应商锁定。
  • 开发者无缝体验,支持 GitOps、DockerOps、ManualOps等。
  • 支持常用工具和框架,例如 Django、Ruby on Rails、Spring 等。

Knative 主要包括 2 大核心模块:Serving 和 Eventing

Serving提供了Service应用模型,支持基于流量的灰度发布、版本管理、缩容到0以及自动弹性。

Eventing 提供事件驱动能力。支持丰富的事件源,以及用于事件流转、过滤的Broker/Trigger模型。

为什么是Knative

那么我们为什么选择Knative呢?

根据 CNCF 2020 中国云原生调查报告,Knative 已经成为 Kubernetes 上最广泛安装的无服务器.

另外 Knative 社区近期也发起了一项统计:当前哪些云厂商或企业在提供或者使用 Knative。我们可以看到,几乎所有的大厂都支持或者集成 Knative, 如阿里云、谷歌云、IBM、Red Hat等,并且大部分都提供了生产级别能力(Production),这些迹象表明越来越多的用户拥抱 Knative。

此外近期 Knative 已申请成为 CNCF 孵化项目,这无疑让 Knative 开发者为之兴奋。

Knative 落地挑战、应对与效果

从开源到产品化落地,必然会面对一些挑战。Knative 产品化落地主要面对如下挑战:

  • 管控组件多,运维复杂
  • 0到1冷启动问题
  • 流量请求1对1分发

那么我们如何来应对呢?

我们提供组件托管,帮助用户节省资源及运维成本;当请求为0时,缩容到低规格保留实例,实现请求 0 到 1 免冷启动,做到成本可控;提供自研事件网关,做到流量的精准控制。


Serverless Kubernetes 落地实践

落地方案

结合上述介绍,向上通过Serverless Framewok Knative更聚焦业务应用,向下通过虚拟节点减少对基础设施的关注。这就是我们Serverless K8s 落地方案:围绕K8s api, 下线集成云产品的能力,包括消息事件、弹性容器实例以及日志监控等。向上通过 Knative 围绕应用为核心,提供事件驱动、自动弹性等能力

典型应用场景

最后看一下我们有哪些落地场景,典型的应用场景及行业领域如图:


落地实践:异构资源,按需使用

  • 客户痛点

用户希望通过 Serverless 技术按需使用资源,节省资源使用成本,简化运维部署 。另外有 GPU 的业务诉求。希望使用容器化的 Serverless 支持使用 GPU 资源,同时简化应用运维部署(尽可能少的操作 k8s deployment/svc/ingress/hpa等资源),IaaS资源免运维。

  • 解决方案

使用 Knative + ASK 作为 Serverless 架构。数据采集之后,通过服务网关访问数据处理服务,数据处理服务根据请求量按需自动扩缩容


落地实践:事件驱动,精准分发

某客户直播系统支持用户在线互动。消息数据的处理主要有以下技术挑战:

业务弹性波动,消息并发高。

•互动实时响应,低延迟。

客户选择阿里云的Knative服务进行数据的弹性处理。应用实例数随着业务波峰波谷实时扩容和缩容,真正做到了按需使用,实时弹性的云计算能力。整个过程完全自动化,极大的减少了业务开发人员在基础设施上的心智负担

小结

我们回顾一下本文介绍的主要内容:

首先介绍了为什么在 Kubernetes 提供 Serverless:

  • K8s 已成为云原生业界标准
  • 面向标准 K8s API 进行 Serverless 编程

然后我们如何实现 Serverless  Kubernetes:

  • IaaS 节点免运维
  • Serverless Framework (Knative)

最后介绍了2个落地实践场景:

  • 异构资源,按需使用
  • 事件驱动,精准分发

一句话:Serverless Kubernetes 基于 Kubernetes 之上,提供按需使用、节点免运维的 Serverless 能力,让开发者真正实现通过 Kubernetes 标准化 API 进行 Serverless 应用编程,值得关注。

欢迎有兴趣的加入以下钉钉交流群:

     


参考

【CNCF 2020中国云原生调查报告】https://www.cncf.io/blog/2021/04/28/cncf-cloud-native-survey-china-2020/

【Knative社区使用情况统计】https://github.com/knative/community/blob/main/ADOPTERS.MD

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Kubernetes 搜索推荐 Linux
Containerd容器镜像管理
Containerd容器镜像管理
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
1665 62
|
Kubernetes Linux API
[没接触过kubevirt?]15分钟快速入门kubevirt
什么是kubevirt? kubevirt是一个容器方式运行虚拟机的项目。`kubevirt`是附加`kubernetes`集群上的,它是通过 `CustomResourceDefinition(CRD)`部署到`Kubernetes API`变成资源对象。使用方式类似创建`deploy、pod`......这些资源清单。
5793 0
[没接触过kubevirt?]15分钟快速入门kubevirt
|
人工智能 固态存储 安全
一文告诉你CXL是什么,有什么新的机会 (上)
> 1. 大数据AI/ML应用爆发驱动大内存需求,但内存增长受限,CXL互联方案应运而生 > 2. CXL分为1.0/2.0/3.0版本,分别提供直连、池化、Fabric能力,预计在2022年/203年/2025年之后市场可用,目前看来池化对于软件的影响最大 > 3. CXL更多是对于已有架构的性能优化,全新的机会不多,较大的机会在于系统软件、内存即服务,以及内存数据库和内存云结构 > 4. CXL大概率将成为跨计算引擎的内存结构标准,短期利好云厂商,长期会数据中心架构产生结构性的变革
3964 0
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
266430 0
|
8月前
|
机器学习/深度学习 传感器 编解码
人机融合智能 | 脑机接口和脑机融合
脑机接口是一种在大脑与外部设备间建立直接信息交流的技术,能实现意念控制设备或对大脑进行调控。脑机融合则进一步将生物脑与机器智能结合,推动人机协同交互。本文介绍了脑机接口的技术框架、信号采集与解码方法,并探讨其在医疗康复、人机交互等领域的应用前景及挑战。
449 0
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
356 4
|
JavaScript 算法 安全
出现错误,无法启动 Visual Studio Exit Code:9
出现错误,无法启动 Visual Studio Exit Code:9
545 2
出现错误,无法启动 Visual Studio Exit Code:9
|
资源调度 分布式计算 Hadoop
搭建YARN集群
文章介绍了如何搭建YARN集群,包括启动HDFS集群、修改YARN配置文件、启动ResourceManager和NodeManager节点,并提供了用于管理Hadoop集群的自定义脚本。
447 3

热门文章

最新文章

相关产品

  • 函数计算