课时1:Serverless容器入门和实践案例

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 课时1:Serverless容器入门和实践案例

云原生技术实践训练营:课时1:Serverless容器入门和实践案例

课程地址:https://developer.aliyun.com/trainingcamp/494b29772fce4912ac49c8b714882cf7?spm=a2cwt.28237621.J_9603273760.2.31b2b726xTbsZG


课时1:Serverless容器入门和实践案例

 

内容介绍

一、课程概述

二、复杂性下沉

三、阿里云 ASK 竞争优势

四、案例介绍

 

一、课程概述

Serverless 现在有三种典型的算列模式,一种是 FC,一种是 SAE。现在介绍 ASK Serverless Kubernetes 这种模式,K8S 即使已经成为企业上云通用的一种标准,但好处在于具有其自身的社区和标准,几乎是到任何一个云上或者甚至是 IDC 和云上都是相同的使用方式。这是它的优势的一个所在位置,完整的 K8S 还是要非常多的复杂度的,不管是哪一种模式的 Serverless 最核心的位置就在于把复杂度向云下沉,复杂度不可能消失,都是从最基本的物理机上面把各个资源一块块切出,再配合应用,这个过程中调度的复杂和资源的管理都是必不可少的。

开发者如果更容易的使用这些能力就要使复杂度不断往云上下沉,这些复杂度下沉到云上之后通过云上的各个系统把它屏蔽,对用户暴露出来的是通过一些标准的能力,不管到何处都可以使用相同的方式去操作。这个时候就降低了学习的成本,因为与谁交流何处使用都是一样的。这个时候学习的成本入手的门槛获企业级的门槛会变得更低。接下来会分成复杂性下沉、Serverless Kubernetes 架构、阿里云 ASK 竞争优势、案例介绍。

 

二、复杂性下沉

1、Serverless 和复杂性下沉

如果要自己完整的搭建一个 Kubernetes 集群的话,首先就是节点管理的复杂度,节点要做节点网络的管理,这个节点能够分配多少 Pod,10个20个60个或者是100多个。图片1.png

 

要做一个 Pod 网络的划分。Node 上有多少资源要切出,保留其上面常驻的服务。这些都需要去提前规划好。有的节点会分成一组,这一组节点是系统的组建,另一组节点是跑应用的组件。不同的应用它也不一样,有的应用对稳定性要求比较高,它的资源的规会更高有的应用的稳定性要求没有那么高,可能追求的是效率,成本会低一点这个时候的节点也不一样,其中带来的节点管理的复杂度都会比较高

另外因为 Kubernetes 是一个相当有社区有开源的迭代在发展,所以它的很多功能是和版本相关的,所以如果要使用什么功能,就要和它的版本全相关。所以版本升级也有一定的复杂度

使用了 Serverless Kubernetes 之后就会把这些复杂度不断的下到云上,给用户呈现出来的是直接部署应用。

 图片2.png

2、Serverless Kubernetes 优势

首先是免运维,使用了 Serverless Kubernetes 之后,就不需要去维护节点了
上不管是使用什么模式,服务一定都是会在 VPC内的只要有一个 VPC 的网络,虚拟的一个网络环境因为运行所有的算例,不单单是把服务进行起来,还要做数据的处理,可能要用户登录的信息的处理,所以一定有数据的存储,所以它都会在一个 VPC 在这种情况下创建一个 ASK 集群出来不需要任何的节点,节点上的所有的维护都是免

在没有点的情况下想要部署应用的,直接把应用部署上去,需要多少实它就会自动创建出多少实例,不需要提前准备,减去了准备资源的复杂度

另外就是兼容性。Serverless Kubernetes 几乎可以标准安入云上和云上其他所有的资源比较深的整合在一起但是要做到有一个标准,就是要兼容社区的使用规范,社区所有的能力一定要有,否则社区的能力就会丧失。兼容社区的标准这是一个优势,Serverless Kubernetes 中的 Pod 就是一个应用的实,这个实它是强隔离的,用户可能是进行自己的业务如果这个集群都是进行自己的业务,那可能是相互信任的但有些是 ISV 的厂商进行的是三方客户的业务,或者进行的一些服务可能本身是社区的,这个时候它其实在一个强隔离的环境里是非常安全的,不会越狱出来。Serverless Kubernetes 就是这四大特点,因为弹性扩容几乎是一个无线扩容,兼容社区的标准和它强隔离的特性

3、ECI 弹性容器实例

Serverless Kubernetes 第一个特点就是免运维,其实首先是把nod 的管理放在云上首先是有一个 ECI 的实,可以认为 Pod 以前是在 ECS 的 Nod 上面创建出来一个 Nod 上面可以创建很多 Pod。其实不需要注意 Nod,一个 Pod 直接对应到一个 ECI 的实例。ECI ECS 如果比的话,可以认为安全隔离的级别是完全一样的,但是它更轻量级,所以一个 Pod 就可以几秒内创建出一个 ECI 实例。这样的话 Pod 就和云的资源一一这样对应起来通过这种方式就做到了零节点,免运维。

图片3.png

4、ASK:Serverless Kubernetes

Serverless 的master 的环境是托管的,所以整个集是托管的,然后节点也是免运
图片4.png通过这种方式做到了像 Pod,Deployment,Statefulset 等所有常见的资源以及 CRD 这些资源都是可以在上面开展。如果 ECI 接到 Serverless K8S中,就是中间有一个虚拟的 Kubelet,通过虚拟节点的方式接进来但对于从 Kubernetes 的角度来看,它还都是标准的 Nod 和标准的 Pot,所有的能力社区的玩法都是一样的,只不过底层的 Pot 开展在一个轻量级的安全容器中,简单的理解是这样一个意思所以通过这种方式把 Kubernetes 做成 Serverless 化。

5、虚拟节点的灵活性

在云上 Kubernetes 现在有两种主流的使用 Serverless Pot 这种方式,第一种方式就是最右边就是 Serverless Kubernetes ASK。第二种方式就是左边企业级的用户有些时候还是需要使用 ECS  的 Nod 的,也许是因为之前的服务就是在 ECS  Note上的。也许是因为有一些特殊的需求,现在 ASK 上还不能满足

这个时候就可以把虚拟节点装在 ACK 中或者直接使用 ASK。现在提供的能力可以做到一分钟能创建3000个 Pod,这个速度是很快的,不需要准备任何资源。

对于有明显的波峰波谷或者需要经常扩容和所容的这些任务,或者是微服务和批量处理的这种场景,其实这种有典型的周期的都是非常适合的

图片5.png

  

三、阿里云 ASK 竞争优势

1、统一资源池

接下来看阿里云上做这种 Serverless K8s 的优势在哪里第一个就是可以认为 ECS 和 ECI 这两种模式是打通的,只是使用的路径不同因为 ECS 是在云上发展这么多年,的基础设施是非常完善的,比如它的融资的处理,比如它的热迁移,比如它生产链路的整个优化,这些都是完全复用这是第一点,它的稳定性的基础设施都是用的

第二 ECS 的资源池是非常丰富的,在阿里云上全球有28个region,其中 ECS 和 ECI 是完全打通的,所以 ECS 到哪里  ECI 就可以用到哪里,就是相当于使用 ASK 在全的28个人都可以去用,它的资源池也是打通的,ECS 的资源池和 ECI 的资源池是完全一样的,也就是整个阿里云上所有的资源都可以通过 ECI 的方式开展出来,这样的话对于用户使用云的能力实是非常方便的。还有就是像 GPU 的这种能力,所有 ECS 支持的规格 ECI也都会支持所以可以通过 ECI 开展 GPU 这种实,直接使用也都是可以

2、全球 Region 分布

全球的28个 region,其实所有的 ECS ECI全都一样,这个其实对用户来说具有非常大的便利性,不管是国内的还是在海外去部署其实都是一样的,都是在 K8s 中部署,没有任何差异。

3、Serverless Kubernetes 兼容性

兼容性是 Serverless Kubernetes 中是一个非常重要的标准,如果没有兼容社区 Kubernetes 一些能力的话,那就对用户来说就是有损失的

常见的这种 workload ,不管是 DeploymentStatefulset,Job 或者是 CRD 都是支持的这些系统组件 CoreDNS,存储的组件也都是正式的另外整个生态社区的好处不在于对这个标准的提出,而是有一套完整的社区的工具

比如 Helm,Kustomize 这些工具,首先这批工具是第一,第一批工具是围绕 K8S 构建出来的

第二批工具包括大数据和 AI,现在 AI开始流行起来所有的 AI 的开源的这种生态中都在逐渐的基于 Kubernetes 在构建 AI 部署的解决方案,所以当 Kubernetes 在今天已经非常成熟的时候,这种新兴的业务的企业级的分布式的架构几乎都是 Kubernetes 去部署的,所以比如说像 AI 这种常见点以及其他 AI 的框架,它的分布式的训练都是按 K8s 这种模式去构建

Kubernetes 社区有一个叫 Conformence contest,就是的一致性测试,怎么去衡量它的兼容性,就通过一致性测试的成功率来判断现在的成功率是做到了96%,有一部分是不支持的,这种 Nod 本身是虚拟的,它不是一个真实的,所以这种是选择性不去支持,其他的测试都是可以通过的,所以对于用户来说部署一个应用,所有的能力都是完备的

图片6.png

4、ACK,ASK 弹性伸缩策略

核心的弹性的能力 APA 容器上都是有的,因为做到了社区的兼容,所以这种弹性的能力全都是一样的除此之外还做了一个增强的弹性,就是右上角这个 AHPA,这个 AHPA 是做的一个增强这个部分后面会过一个案例来详细介绍。

图片7.png

 

四、案例介绍

1、主打弹性和开发场景的业务,支持业务托管

总结起来就是 Serverless Kubernetes 它适合些场景的业务是比较好的。第一个是在线业务的弹性,大部分的在线业务都有它的周期性,因为很多业务其实人的作息时间是有关系的,所以是有明显的周期的对于这种业务它使用弹性是非常合适的

第二个是事件的类型的处理,比如说 LoT 或者是一些视频录播的场景,它有明显的周期性的再往下就是弹性的场景,比如一些 job 的场景有一些 job的任务去处理

还有一些是CI/ CD,现在在 ASK 里面开展的很多用户其实是在进行 CI/CD 的,它的内部的客户,有可能是对外提供的服务们要做一些 CI/CD 处理的时候直接丢到 ASK 中开展,完之后,就把资源释放掉,所以对他们来说所有社区的 CI/CD 的这些工具都有在 K8S 上的这种开源的架构,它们都支持在 Kubernetes 上面,开展起来很容易第二个是开展起来自身基本没有任何成本,很容易上手,用完了之后资源自动的清理掉,所以其实对们来说非常容易

数据处理比如 Spark,现在有非常多的 Spark 的典型的用户,们的业务就是可以认为在凌晨的时候开始使用大量的业务开始进行数据的处理,白天的时候用的也有,但是没有那么多,所以对这种客户免去了所有的节点的运维。

接下来会有大量出现的 AI 这种框架,们一定大概率都是 Kubernetes,因为它已经是大家通用的一个标准,在哪里都可以用起来,这是一个最大的前提做一个企业级的框架的时候,一定是基于这个最大的前提共识,让框架的成功率才会更高,所以 Spark 现在的客户开始逐渐的往 Kubernetes 上转移。

接下来就是 AI 开发机,如果做过 AI 开发的话,可能会有一个比较强的感觉AI 开发和普通的应用产业开发有个非常大的不同普通应用产业开发,比如一个微服务调用a调用b,在本地的电脑上启动起来就能开展,可是 AI 的这种开发几乎在自己的电脑上是不能开展的,因为 AI 开发去做一个测试数据集的训练在 Mike 的笔记本上几乎要跑30分钟到几个小时,取决于那个数据集的大小和训练的次数,这个其实非常值得成本,所以AI开发现在一个比较好的办法就是在云上买一个实在上面做开发

但是因为它是一个开发环境,其实里面有很多数据是要保留的,不是进行完把它丢掉就好了,所以这个开发环境需要有类似于关机的一个能力,需要保留数据,这些能力也是基于 ASK 提供了这样的一个功能,所以在 AI 的环境就算开发也是有这样的环境来用,就会发现它是一个完整的生态,所有人都是在生态上去构建,所以它就更容易做的更多第二个是应用免运,就是典型的微服务的应用,然后通过 ingress 或者是 SLB 这种网关把它暴露出去,下面的话就是workload Pod在进行。

图片8.png

2、案例:免运维应用托管

这里前面提到了一点就是 AHPA,左边这个图是说比较理想的情况下,那条绿色的线是供给给应用的资源,那条橙色的线是这个应用它真实需要的资源,其实理想的情况下是供给的资源比真实需要的稍微多一点,只要它使用就好了,因为只要多余的其实都是浪费的,假设都是在 K8S 里面或者是传统的 ECS 里面去部署一个应用的时候,大概采用了右上角的方式,就是应用的实例数是固定的,固定的实例数是应用真正需要资源的时候,它是一个周期性的曲线,所以这里面存在巨大的浪费。使用 AHPA 的原因在于因为如果是使用社区那种弹性方案的话,社区弹性方案的思路都是这样的,比如发现CPU不够了开始弹第一个发现 CPU 不够的时候已经晚了,第二个开始弹出来的 Pod,它变得可用的时候也是需要一段时间的,所以整个资源的供给是延后的,发现它需要资源都已经延后了,然后资源在完成供给又要延后,所以这是的传统弹性的一个问题,这是大家在云上非常重的企业应用不太敢使用弹性的一个核心原因

图片9.png

通过积极学习的方式去预测这个应用的周期性,比如如果这个应用进行了七天,就可以根据七天预测它的周期性如果没有周期,那我给出预测值建议可能就是一条直线,如果它是有周期的话,那可能就给出一个周期性波动的曲线今天这个事情在 Kubernetes 能做的更好的原因K8s里面整个系统它做了非常多的功能,把复杂度包装起来,对用户来说不需要做很多事情,做了这件事情之后有个额外的收益,它知道所有的上下文,这个 Pod 是什么时候创建的都知道。拿到应用的每个实例的生命周期之后,就知道了 Pod 从创建到开展需要多长时间,根据应用的周期性把应用的 redate 时间也知道所以就提前扩容。基于这两个前提做到了提前扩容,通过提前扩容的方式能够做到左上角的形式。当资源真正需要的时候提前把它准备好。

左下角就是在线开展的真实的一个应用,绿色的线显示它保持最大值 Pod 数不变的话,传统的应用管理部署的方式其实是一条直线,预测出来的就是周期性的也就是蓝色的线,相对于固定的实例数最大值是6,预测的方式节省了将近69.8%的资源,几乎是70%的资源,对它来说是一个巨大的收益,实例数减少一点,大部分都是3。假设它的固定实例数是三,也是一条直线的时候,预测节省的是 39.6%的资源,这个效果是非常可观的,这个是用户真实的去开展业务。

3、案例:Use Virtual Node at scale with kubernetes

使用 Severless Kubernetes 的弹性的 Pod 有两种方式,第一种是 ASK 方式,第二种是 ACK 方式。ACK 就是传统的 ECS 的 Nod,加弹性的 ECI 的Pod,这种方式也可以开展。蓝色的线表示常驻,可能有一些应用是不能弹的,大部分业务一直都能常驻。弹性 Pod 在 ECI 中,两种模式相互搭配,把虚拟节点安装在 ACK 的 K8s 指点就行了。

图片10.png

4、案例:面对突发流量的弹性扩容

这是突发流量,微博现在用的正是这段视频,给微博提供的能力就是3000个 Pod。ASK 能够快速的把应用弹起来。

很多客户都是使用这种典型的模式,会把任务直接提交到 K8s 中,要求就是 Kubernetes 一定要兼容社区的标准,因为现在很多第一资源包括大数据,AI 等,因为 K8s 是不会面向新兴的业务去定义 workLoad,所有的 workLoad 都是开发者自己定义的。这就是 CRD 这种方式,所以K8s 是一定要兼容 CRD 这种方式,才能让新型的业务开展起来。EMR 的架构也可以进行,K8s 也可以支持 EMR 算例,因为 EMR 算例典型的优势是成本低。

图片11.png

5、CI/CD Pipeline

使用 CI/CD 其实也是非常典型的,它在测试发布的时候可能同时编译很多版本,可能在很多环境同时去测试,测试完去做发布,对它来说在测试的时候需要一大批资源,测试完之后这些资源需要立刻释放掉,这个也是非常合适的场景。

 图片12.png

 

6、案例:RTC 直播流转录/混流

视频直播转码的这些方式其实都是典型的,直播也是有非常强的周期性,白天直播少一点,夜间直播的多一点。

图片13.png

 

7、案例:PyTorch/TensorFlow/Caffe

AI 的训练以及它的推理在线的运行比如 Kubectl 的方式都是 Kubernetes 来监测的,这种新型模式的业务也都是 K8S 这种模式。


图片14.png

 

8、案例:执行 Job

典型的 Job 场景同样适用于 K8S,因为都是按需使用的,都是非常适合使用 Severless Kubernetes 这种模式。

图片15.png

 

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
运维 安全 Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在数字化转型的浪潮中,企业对于IT基础设施的要求越来越高,不仅需要快速响应市场变化,还要确保系统的稳定与安全。本文深入探讨了如何通过融合DevOps文化和容器化技术来构建一个高效、稳定且易于管理的云基础设施。通过实际案例分析,阐述了持续集成/持续部署(CI/CD)流程的优化、自动化测试、监控以及日志管理等关键环节的实施策略,旨在为运维专业人员提供一套切实可行的解决方案。
31 3
|
1月前
|
运维 Kubernetes Devops
构建高效可靠的云基础设施:DevOps与容器化技术融合实践
【2月更文挑战第30天】 在当今快速迭代和竞争激烈的软件开发领域,传统的IT运维模式已难以满足业务发展的需要。本文将探讨如何通过整合DevOps文化和容器化技术,构建一个既高效又可靠的云基础设施。文章首先回顾了DevOps的核心理念及其对运维工作流的影响,接着深入讨论了容器化技术的优势和挑战,并提出了一套结合两者的实施方案。最后,通过案例分析展示了该方案在实际环境中的应用效果和潜在益处。
|
12天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
12天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
14天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【4月更文挑战第13天】 在当今快速迭代和持续部署的软件开发环境中,传统的IT运维模式已难以满足业务发展的需求。本文聚焦于如何通过融合DevOps理念与容器化技术,构建一个高效、稳定且易于管理的云基础设施。文章将探讨持续集成/持续交付(CI/CD)流程的优化、容器化技术的最佳实践、以及微服务架构下的应用管理,以期为企业提供一种改进运维效率、加速产品上市时间,同时保障系统稳定性的解决方案。
|
30天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
随着企业数字化转型的不断深入,传统的IT运维模式已经难以满足快速迭代和持续交付的需求。本文将探讨如何通过结合DevOps文化与容器化技术,构建一个既高效又稳定的云基础设施。文章首先概述了DevOps的核心理念及其在现代运维中的重要性,然后详细介绍了容器化技术,特别是Docker和Kubernetes在实现微服务架构中的应用。最后,文中通过案例分析展示了这一融合实践如何在真实环境中提升运维效率和系统稳定性。
21 7
|
1月前
|
运维 Kubernetes 监控
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在当今云计算时代,企业追求敏捷性、可扩展性以及成本效益的云基础设施。本文将探讨如何通过DevOps文化与容器化技术的融合,打造一个既高效又稳定的运维环境。文章不仅阐述了DevOps和容器化技术各自的优势,还提供了一个具体的实施案例,展示了这种结合如何优化资源利用、提高部署速度并降低运维复杂性。
|
1月前
|
运维 监控 Devops
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
在数字化转型的浪潮中,企业的IT基础设施和软件交付模式正经历着深刻的变革。传统的运维方式已难以满足快速迭代、灵活扩展的现代业务需求。本文将探讨如何通过容器技术实现高效的自动化运维体系,重点分析持续集成(CI)与持续部署(CD)的实践方法及其对企业运维效率的影响。通过引入微服务架构、容器编排、DevOps文化等概念,我们旨在为读者提供一套全面的自动化运维解决方案,以支持业务的敏捷性和可扩展性。
|
17小时前
|
网络协议 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之在阿里云函数计算中,服务器调用FC函数时出现 "[Errno -3] Temporary failure in name resolution)" 错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
11 4
|
18小时前
|
Web App开发 缓存 安全
Serverless 应用引擎操作报错合集之在使用阿里云函数计算的过程中遇到“Browser closed unexpectedly”的错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
10 2