0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度揭秘阿里云Serverless Kubernetes

马哥Linux运维 来源:InfoQ 作者:InfoQ 2022-03-24 10:45 次阅读

伴随着云原生的发展,从早先的单机版 Docker 到 Kubernetes 的编排领域的一统江湖,再到云上托管 Kubernetes,技术风雨变化。今天我们就沿着历史的脉络,一起看一下 Serverless Kubernetes 的发展史。

故事,从 Docker 讲起

故事虽然从 Docker 讲起,但我们不能忽视了 IaaS 先辈们在前面的披荆斩棘,以及云计算大佬们很早就确定的云计算发展规划。

在十几年前,先辈们从按照用户使用(云平台提供能力)维度,将云分为三层:

IaaS:Infrastructure as a Service,基础设施即服务,提供虚拟机或者其他基础资源作为服务提供给用户;

PaaS:Platform as a Service,平台即服务,将平台作为服务提供给用户,譬如在平台中可以随用随取各种中间件服务;

SaaS:Software as a Service,软件即服务,将应用作为服务提供给用户,譬如邮件服务。

如下图所示,从 IaaS 到 PaaS,用户(开发和运维)越来越少地感知基础资源,更加关注到业务当中。

1114d890-a484-11ec-952b-dac502259ad0.png

让专业的人做专业的事情,从而发挥整体的最大效率。譬如一个初创的互联网买菜公司,没有必要自己去建机房、采购硬件、配置网络存储以及安装操作系统等与业务无关的事情,更应该把精力放到业务的开发和运营上面。

经过十几年的发展,IaaS 已经比较成熟,各种基础资源,如 ECS、VPC、EBS 等已经深入人心,但 PaaS 的发展却非常缓慢。

早在 2008 年,Google 就推出了 App Engine 服务,想打造一个开发平台,让开发者只需要编写业务代码就可以在 App Engine 上面运行。这个思想过于超前,开发者还不能完全接受。除了公有云以外,开源社区 PaaS 平台也在左突右冲。其中,IBM 的 Cloud Foundry 和 Redhat 的 OpenShift 最为出名,他们都希望提供一个应用快速发布的平台,但也都是不温不火,反而因为各种兼容问题越来越难使用。

直到 2013 年 Docker 的诞生,一个对开发者充分友好、一个命令可以拉起一个服务,并极致简单的操作方式,让 Docker 一下成为社区最受欢迎的开源项目之一。

Docker 的优势主要体现在:Docker 镜像将应该依赖的环境和应用打包成一个压缩文件,这个文件可以在任何安装了 Docker 的机器上面直接运行,解决了应用从开发、测试到生产各个环节部署问题,并且能够保障环境的一致性。

Docker 的成功在于极致的简单操作而非技术的创新,像 cgroup、namespace 这些技术早就加入内核特性了。所以,Cloud Foundry 早先并没有把 Docker 看做竞争对手,因为这些技术早就在 Cloud Foundry 上使用了。反而,Dcoker 镜像这个无心插柳的功能,让 Docker 真正实现了“Build once, Run anywhere”。

Kubernetes 确定江湖地位

最初的 Docker 是单机版本,面对大规模部署的场景时需要一套管理平台,就像 OpenStack 管理 VM 一样。

容器管理平台初期也是百家争鸣,譬如 Mesos、Swarm 等,但它们都没有脱离 IaaS 固有思维,还是停留在把容器当做虚拟机管理。直到 Kubernetes 的出现,才真正开始一统江湖。这里除了 Google 的背书以及脱胎于 Borg 的成熟架构以外,更重要的是 Kubernetes 在诞生之初就已经想好了容器如何管理( Replica set)以及如何对外提供服务(Service)。

其中,最令人惋惜的就是 Docker 公司自家的管理系统 Swarm。当时的 Docker 虽然已经斩落头角,但 Docker 公司本身却没有实现盈利。于是公司推出了 Swarm 企业版,虽然 Swarm 后期也引入了很多 Kubernetes 的概念,但无奈大势已去,云原生的生态已经围绕 Kubernetes 蓬勃发展。

1141fd3e-a484-11ec-952b-dac502259ad0.png

Kubernetes 虽然由 Google 主导,但却保持了足够的开放性,将资源的管理抽象出接口规范,譬如针对容器运行时的 CRI、针对网络的 CNI、针对存储的 CSI,以及设备管理 Device Plugins 和各种准入控制、CRD 等。Kubernetes 正逐渐演变成云操作系统,各种云原生组件就是运行在这个操作系统之上的系统组件。

公有云托管 Kubernetes

虽然 Kubernetes 确定了领导地位,但 Kubernetes 的运维却并非那么容易。在这种背景下,公有云尝试纷纷推出了云上 Kubernetes 托管服务,比如国内的阿里云在 2017 年就推出了托管 Master 的方案:ACK(Alibaba Cloud Container Service for Kubernetes)。

在 ACK 中,Kubernetes 管理组件的安装和运维托管给公有云,使用 ECS 或者裸金属作为 Kubernetes 的计算节点,极大地减少了 Kubernetes 用户的使用成本。用户从云平台获取一个 kubeconfig 文件便可以直接通过 kubectl 命令行或者 Restful API 管理集群。

1156fd06-a484-11ec-952b-dac502259ad0.png

如果需要扩容集群容量,只需要调整 ECS 个数,新创建的 ECS 会自动注册到 Kubernetes Master。不仅如此,ACK 还支持一键升级集群版本和各种插件。ACK 将繁杂的运维工作转移到云上,并且借助云的弹性能力,可以做到分钟级别的资源扩展。

将免运维和弹性进行到底

公有云相对私有云更加关注成本,因为在私有云中,用户的基础设施成本基本是固定的,用户不可能下线一个服务后去机房停一台服务器。与之相反,公有云则提供了按量付费的模式。

如果集群里面运行任务大部分都是 long run 并且资源需求是固定的任务,使用 ACK 没有问题,但如果是大量 job 类型的任务或者存在突发流量的情况,ACK 这种临时扩容虚拟机在虚拟机上启用容器方案在弹性方面有所欠缺。

比如某在线教育公司,每天晚上 7-9 点上课高峰期会临时扩容几万个 Pod,如果使用 ACK 就需要预先评估这些 Pod 的容量,然后再折算成 ECS 的算力,提前购买对应数量的计算节点加入到 Kubernetes 里面,并且还需要在 9 点之后将这些 ECS 释放掉,操作非常繁琐。

那么,有没有一种既能兼容 Kubernetes 使用方式,又能够秒级启动 Pod,并且按照 Pod 维度计费(ACK 按照 Node 维度计费)的方案呢?

AWS 率先提出 Fargate,可以在没有真实 Node 的情况下,以 Pod 的维度加入到 Kubernetes 集群。阿里云在 2018 年也推出了类似的产品 ECI(Elastic Container Instance),每个 ECI 就是一个 Pod,这不过这个 Pod 是托管在云上的。

Kubernetes 使用 ECI 有两种方式 :一种是 ASK(Alibaba Serverless Kubernetes),另一种是 ACK + Virtual Node 的方案。在 ASK 中,计算节点完全变成了 Virtaul Node。Virtaul Node 是一个虚拟的无限容量的计算节点,负责 ECI 生命周期管理。Virtaul Node 会注册到 Kubernetes 里面,对于 Kubernetes 来说,它就是一个普通的 Node 节点。用户只需要提交原生的 Kubernetes Yaml 便可以创建出 Pod,完全兼容 Kubernetes 的使用。

118434a6-a484-11ec-952b-dac502259ad0.png

Virtaul Node 还可以与普通 ACK 节点混用,用户可以将 long run 的任务调度到 ECS 节点上运行,然后利用 ECI 的快速启动(10s 内拉起容器),将突发或者短周期任务调度到 ECI 上面,从而达到成本最优。

11ae2bb2-a484-11ec-952b-dac502259ad0.png

目前 ECI 已经被很多互联网以及人工智能公司所采用。在后续的文章中,我们将逐步分享几个典型用户在迁移 ECI 过程中遇到的技术问题和挑战。

总结一下,我们今天从技术发展的角度回顾了容器和 k8s 的发展历程,可以看到公共技术正逐渐沉淀到底层,无论是 k8s 还是 ServiceMesh,都在分别尝试将服务管理和流量管理下沉到基础设施中。但这些组件本身也存在管理成本,所以演化出云上托管。未来,随着技术的下沉,云计算提供的能力将不断上移、提供更加全面和丰富能力,让开发专注在业务之上。

本文节选自阿里云技术专家陈晓宇的《深度揭秘阿里云 Serverless Kubernetes》系列专题。本专栏将主要围绕如何在 Serverless Kubernetes 场景中实现秒级扩容,以及在大规模并发启动中遇到的各种技术挑战、难点以及解决方案,系统地揭秘阿里云 Serverless Kubernetes 的发展、架构以及核心技术。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 阿里云
    +关注

    关注

    3

    文章

    883

    浏览量

    42617
  • serverless
    +关注

    关注

    0

    文章

    61

    浏览量

    4440

原文标题:深度揭秘阿里云 Serverless Kubernetes

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于阿里Serverless架构下函数计算的最新应用场景详解(一)

    结合阿里的函数计算产品来讲解各个应用场景中架构以及如何解决的场景中的痛点。阿里的函数计算是基于Serverless这种架构实现的一个全托
    发表于 01-25 11:06

    阿里Kubernetes集群联邦

    摘要: kubernetes集群让您能够方便的部署管理运维容器化的应用。但是实际情况中经常遇到的一些问题,就是单个集群通常无法跨单个厂商的多个Region,更不用说支持跨跨域不同的厂商。这样会给
    发表于 03-12 17:10

    阿里与WPS深度合作,开放数据处理生态

    摘要: 在3月28日举行的2018云栖大会-深圳峰会上,阿里与金山办公达成深度合作,WPS在线预览与格式转换能力落地阿里。标志着
    发表于 04-18 14:11

    阿里容器Kubernetes监控(一) - 资源监控

    的概念和物理概念无法在监控数据、生命周期上面实现统一。阿里容器服务Kubernetes监控进行了深度集成,用应用分组来抽象逻辑概念,今
    发表于 04-23 14:35

    阿里宣布推出Serverless Kubernetes服务 30秒即可完成应用部署

    摘要: 阿里宣布推出Serverless Kubernetes服务,容器服务新增Serverless形态。5月2日,
    发表于 05-03 15:38

    Cloud Foundry平台中国唯一供应商,阿里持续链接Cloud Foundry/Kubernetes生态

    Foundry Container Runtime(CFCR)的负载,其中后者基于Kubernetes和BOSH技术、是支持容器架构的平台核心组件。阿里的CPI适配研发项目代码
    发表于 05-10 09:37

    阿里Kubernetes容器服务上打造TensorFlow实验室

    的定义和训练的收敛趋势。总结我们可以利用阿里Kubernetes容器服务,轻松的搭建在云端搭建TensorFlow的环境,运行深度学习的实验室,并且利用TensorBoard追踪训练
    发表于 05-10 10:24

    持续优化云原生体验,阿里Serverless容器与多云上的探索

    摘要: 深度解读阿里Serverless Kubernetes, 介绍对Open Service Broker API标准的支持.近日,
    发表于 05-15 23:22

    阿里E-HPC联合安世亚太、联科集团共建超算生态

    、扩展性上都有非常大的优势。5月23日,2018云栖大会武汉峰会,阿里高级技术专家刘峥和张维,对弹性计算最新上线的 serverless (无服务器化)计算技术Bazaar及基于该技术的容器服务产品
    发表于 05-28 18:36

    再次升级!阿里Kubernetes日志解决方案

    摘要: 今天阿里Kubernetes日志解决方案再次升级,为您带来以下改进: 1、极致部署体验:只需一条命令一个参数即可完成整个K8S集群的日志解决方案部署。 2、支持更多配置方式:除原生控制台
    发表于 05-28 19:08

    Bazaar:阿里Serverless计算服务探秘

    为运行代码的基础的。Bazaar:阿里Serverless计算服务探秘 作者:Bazaar项目组1. 什么是 ServerlessServer
    发表于 06-08 15:35

    解锁高性能计算与区块链应用,阿里Kubernetes服务召唤神龙

    对于高性能计算、网络类型应用选择弹性裸金属服务器节点,对深度学习应用选择GPU节点。对GPU节点,阿里Kubernetes服务会自动开启相应调度能力。在对集群资源出现变化时,可以动态
    发表于 06-13 15:52

    阿里在LC3大会上透露未来要做的两件事

    容器服务,可以支持大客户在高峰突袭时实现应用层面极速扩容,而如今的Serverless Kubernetes容器服务底层同样也是基于阿里弹性计算ECS构建,提供高弹性强隔离的计算能力
    发表于 07-02 15:27

    Serverless适用何种场景?会带来哪些冲击?

    。这些程序经常是移动端 APP 或者是最近几年比较火热的单页 Web 应用。这些应用可以完全基于的服务进行构建,比如 AWS 的 S3 和 DynamoDB 或者是阿里的 OSS ...
    发表于 07-12 07:41

    全球公测,阿里Serverless Kubernetes 更快、更强、更省心

    摘要: Serverless Kubernetes全球公测进行时!2018年8月,阿里Serverless Kubernetes服务开启全
    发表于 08-17 17:45 327次阅读