张维 ServerlessContainer的架构设计和应用场景

文字内容
1. Serverless Container的架构设计和应用场景 阿里云容器服务团队 张维 ArchSummit 深圳 2019
4. About Me 1. Living in Hangzhou 2. Working at Alibaba Cloud 3. Kubernetes, Serverless Container, …
5. Agenda 1. 基本介绍 2. 架构设计 3. 典型应用场景
6. 1. Serverless Container基本介绍
7. Increasing focus on business logic Application Deployment:Toward to Cloud Native Serverless Computing Container Orchestration Virtual Machine/Bare Metal Decreasing concern (and control) on infrastructure implementation
8. Serverless Runtime 灵活性 Container •容器镜像 •各种类型应用 •Stateless – 如Web应用 •Stateful – 如数据库、消息队列 •Job – 如视频转码、CI/CD •CronJob – 定时数据同步 •… 阿里云 ECI/ASK, AWS Fargate 开发效率 Application •应用代码(指定的运行时环境) •Java •Python •NodeJS •… •主要12-factors类型互联网应用 Heroku, GAE, EDAS-Serverless Function •函数 •NodeJS •Python •Java •… •事件驱动应用 Lambda, FunctionCompute
9. Serverless Container: 关注应用,不用关注基础设施 基于容器 敏捷部署 安全隔离 生态连接 高移植性 无服务器管理 无需节点容量规划 无需OS和系统软件维护 无需升级服务器 零基础设施运维 弹性扩容 “无限”容量 秒级扩容 基于容器扩容 按需付费 没有闲置资源 更高资源利用率 总体更低计算成本
10. 2. Serverless Container架构设计
11. Serverless Container Landscape Serverless Kubernetes 3 2 1 Virtual Kubelet K8s Connector ECI Infrastructure Virtual Node in K8s 4
12. ECI: Elastic Container Instance • Infrastructure of serverless container,Container is the first class citizen in cloud • 提供安全隔离的容器运行环境 ECI • 支持pod语义,提供Container Group Open API - initContainer, probe, volume, exec, logs, metrics … • 按需付费,CPU规格0.25c – 64c, 支持GPU Agent Container Container containerd Kernel • 秒级启动,快速部署 ECI
13. Key Design of ECI • 统一弹性资源调度 - One pool for ECS and ECI - 能力复用:GPU,热迁移,稳定性建设 … - 资源规格多样性 • 成本优化 - 只有池子足够大,成本才可以足够低 - spot实例 • 启动效率 - 安全沙箱 - 容器镜像缓存 ECI ECI ECI 物理机 ECS ECS
14. Virtual Kubelet: Connect Kubernetes with ECI • 连接kubernetes和ECI,实现pod和eci的转换 • 解耦编排层和资源池,彻底释放资源弹性 • https://github.com/virtual-kubelet/alibabacloud-eci Virtual Kubelet K8s Connector ECI Infrastructure
15. Serverless Kubernetes • 零节点,全托管kubernetes环境(5s创建成功) • 提供Kubernetes编排能力,无缝连接Kubernetes生态 - Pod/Deployment/Statefulset/Service/CronJob/Ingress/HPA • 基于ECI资源池,高弹性(不受节点限制) ECI • 目前基于Namespace隔离(未来将会升级) • ALB Ingress Virtual Virtual Kubelet Kubelet K8s Connector ECI Infrastructure Serverless Kubernetes
16. Serverless Kubernetes vs. Classic Kubernetes Classic Kubernetes Cluster Serverless Kubernetes Billing by used amount of applications/resources No need to manage server nodes Billing by the number of cluster nodes Container Scheduling and Orchestration Container Scheduling and Orchestration ECS ECI ECS ECS POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD POD
17. Serverless Kubernetes Cloud Scale Architecture Pod状态逼近 Monitoring Service (Metrics Server, Prometheus) HPA controller Deployment StatefulSet Job CronJob K8S Client 侦听 Pod, Service, Ingress 等资源变化 K8S应用 CRUD K8S API Server ECI Viking agent 上报Pod状态 ECI Container Container containerd Kernel 创建/删除Pod VK SLB 创建/删除SLB 双向同步 IaaS资源状态 DNS 创建/删除DNS Entry Private Zone Etcd Pod
18. Serverless Kubernetes Resource Stack Kubernets Container Applications Kubernetes API Serverless Kubernetes Job/CronJob Service Ingress deploy/statefu lset Pod HPA Service Discovery PVC/Flexvo lume ECI API ECI SLB 4-layer 7-layer CPU/Mem GPU Private Zone Block/NAS/OSS
19. Virtual Node in Kubernetes • 部署virtual node addon Container Scheduling and Orchestration • Pod之间互联互通 • 高弹性,“无限”容量 • CRD Friendly: Kubeflow, Argo, etc kubectl create ns vk kubectl label namespace vk virtual-node-affinity-injection=enabled kubectl --n vk run nginx --image nginx ECS ECS Virtual Node POD POD POD POD POD POD POD POD POD POD POD POD
20. VK-autoscaler:应对在线业务的弹性伸缩 Container Scheduling and Orchestration ECS ECS Virtual Node POD POD POD POD POD POD POD POD POD POD POD POD vk-autoscaler 当真实节点上资源不足时自动调度pod到虚拟节点上
21. Architecture Design Recap • 10x扩展性问题:彻底解耦k8s编排层和资源层 Serverless Kubernetes • 关注技术,但别忽略成本 Virtual Kubelet K8s Connector ECI Infrastructure Virtual Node in K8s
22. 3. 典型场景案例
23. 案例一:Use Virtual Node at scale with kubernetes • 业务有明显的波峰波谷特征 • 使用ECI作为弹性资源池,应对突发流量和Job任务,最大程度降低计算成本 • 分离在线和离线任务 Deploy pod to virtual node using ECI – short run Kubernetes cluster with ECS node – long run
24. 案例二:Adopting ASK on CI/CD Pipeline [-] CODE COMMIT BUILD UNIT INTERGRATION TESTS TESTS CI PIPELINE REVIEW STAGING PRODUCTION CD PIPELINE Jenkins Gitlab Runner Serverless Kubernetes Managed/Serverless Kubernetes
25. 案例三:在线教育的录制和转码 • 弹性、高并发需求 回看 • 晚上是业务高峰 • 按需使用,无需预留资源池 • 成本降低50%以上 录制 转码 学生 学生 教师 极速NAS CDN 学生 录制+转码,2小时 学生
26. Serverless Container应用场景 优 先 落 地 优 先 落 地 在线业务(弹性) 业务托管 HPA/AutoScaler 混合云 事件流(并发) IoT 视频录播 … 任务(弹性/并发) ETL – Jobs CronJobs Serverless Kubernetes CI/CD(弹性) Knative build Jenkins Gitlab runner 数据处理(并发) Spark 机器学习 基因计算 Kubernetes (virtual node) 测试(弹性/并发) Locust Selenium Open API 弹性容器实例 ECI Serverless 弹性 无需管理基础设施即 可运行容器 复用整个阿里云的计 算资源池,按需使用 成本 按量按秒计费 RI 预留实例/Spot 效率 兼容 秒级启动 底层安全沙箱 完全兼容 Kubernetes
27. Pricing: 按需收费/多种计价模型 CPU/MEM cpu通用规格:0.25 – 4 cpu大规格: 8 – 64 cpu与mem比:1:2, 1:4 GPU 包含独享和共享 独立计费类型 RI 预留实例,类似包年包月 显著降低长时间运行成本 Spot 更低成本 浮动价格 运行 2 个 Pod实例(1 vcpu / 2 GiB),每小时运行 5 分钟,持续运行一个月(30 天) 月度总费用: 21.6元 运行10 个Pod实例(2 vcpu / 8 GiB),每天运行 1 个小时,持续运行一个月(30 天)。 月度总费用: 113.4元
28. Get Started • 开服区域: cn-hangzhou, cn-shanghai, cn-shenzhen, cn-beijing, us-west-1 • 控制台:https://cs.console.aliyun.com/#/k8s/cluster/create/serverless • 快速开始:https://yq.aliyun.com/articles/591115 • 参考示例:https://github.com/AliyunContainerService/serverless-k8s-examples
29. 阿里云容器服务产品族 微服务/服务网格 DevOps 应用层 容器编排层 容器资源层 基础设施层 Gitlab Jenkins 云效 Dubbo SpringCloud 企业应用现代化 Istio .net Java 创新业务 企业 AI 区块链 IoT Serverless Kubernetes 托管 Kubernetes 镜像服务 弹性计算 ECS VM, Bare-metal 计算 CPU, GPU, FPGA 弹性容器实例 ECI Container 网络 VPC, ENI, SLB, DNS 公共云 专有云 存储 EBS, NAS, CPFS, OSS
30. 产品支持 弹性容器实例用户交流群 内部CBM & CA交流群