Serverless Kubernetes入门:对kubernetes做减法
ASK: Alibaba Serverless Kubernetes
https://cs.console.aliyun.com/#/k8s/cluster/create/serverless
背景
Kubernetes作为通用的容器编排系统,承载了广泛的应用和场景,包括CI/CD,数据计算,在线应用,AI等,然而由于其通用性和复杂性,管理一个kubernetes集群对于很多用户而言还是充满挑战的,主要体现在:
- 学习成本高;
- 集群运维管理成本高,包括节点管理、容量规划,以及各种节点异常问题的定位;
- 计算成本在很多场景中没有达到最优,比如对于一个定时运行Jobs的集群,长期持有资源池对于用户来说是浪费的行为,资源利用率不高。
Serverless Kubernetes是阿里云容器服务团队对未来kubernetes演进方向的一种探索,通过对kubernetes做减法,降低运维管理负担,简化集群管理,让kubernetes从复杂到简单。
对Kubernetes集群做减法
无节点管理
我们相信未来用户会更加关注应用的开发,而不是基础设施的维护。体现在kubernetes集群中,我们希望用户能够关注在pod/service/ingress/job等应用编排语义上,对底层node则可以减少关注。
无需管理节点也可以显著降低集群的运维管理成本,经统计kubernetes常见的异常问题中大多数与节点相关,比如Node NotReady问题,也无需担忧Node的安全问题,以及基础系统软件的升级和维护。
在ASK集群中,我们使用虚拟节点virtual-kubelet代替ecs节点,虚拟节点的容量可以认为是“无限大”,用户不需要为集群的容量担忧,无需预先做容量规划。
无Master管理
和ACK托管版一样,ASK的Master(apiserver, ccm, kcm等)资源被容器服务平台托管,用户无需管理这些核心组件的升级和运维,也不用付出成本。
极简的k8s基础运行环境
除了无需管理节点和Master外,我们还对kubernetes集群管理做了大量简化,包括默认托管很多addon,用户无需再管理一些基础的addon,也不需要为这些addon付费。依赖阿里云原生的网络和存储等能力,以及独特的托管架构设计,我们提供了极度简化但功能完备的kubernetes基础运行环境。
功能 | ACK | ASK |
---|---|---|
存储 | 需要部署aliyun-disk-controller/flexvolume | 无需部署(正在支持中) |
CNI网络 | 需要部署terway/flannel daemonset | 无需部署,基于vpc网络通信 |
coredns服务发现 | 需要部署2个coredns副本 | 无需部署,基于privatezone访问 |
kube-proxy | 需要部署kube-proxy daemonset | 无需部署,基于privatezone访问 |
Ingress | 需要部署nginx-ingress-controller | 无需部署,基于SLB七层转发 |
免密拉取ACR镜像 | 需要部署acr-credential-helper | 无需部署,默认支持 |
sls日志收集 | 需要部署logtail daemonset | 无需部署,默认支持 |
metrics统计 | 需要部署metrics-server | 无需部署,开箱即用 |
挂载eip | 需要部署terway | 无需部署,使用annotaion指定 |
云盘随pod创建挂载 | 依赖aliyun-disk-controller | 无需部署,默认支持 |
弹性伸缩 | 需要部署cluster-autoscaler | 无需部署 |
GPU插件 | 需要部署Nivida-docker | 无需部署,开箱即用 |
综上可以看到,ACK集群至少需要2台ecs机器以运行这些基本的Addon,而ASK集群把这些基础Addon化为无形,可以达到0成本创建一个开箱可用的kubernetes集群。
简化弹性伸缩
因为无需管理节点和容量规划,因此当集群需要扩容时也就不需要考虑节点层面的扩容,只需要关注pod的扩容,
这对于扩容的速度和效率都是极大的提升,目前一些客户指定使用ASK/ECI的方式来快速应对业务流量高峰。
当前ASK/ECI支持30s完全启动500个pod(至Running状态),单个pod启动可以达到10s以内。
更低成本
除去ASK集群本身的低成本创建外,pod的按需使用也让很多场景下资源利用率达到最优。对于很多Jobs或者数据计算场景而言,用户并不需要长期维护一个固定的资源池,这时ASK/ECI可以很好的支持这些诉求。
经验证,当pod一天中运行时间少于16个小时,则ASK/ECI的方式相比保有ecs资源池更节省经济成本。
ECI:快速交付容器资源的弹性计算服务
谈起ASK,一定会谈到ASK的资源底座ECI。ECI是阿里云基于ECS IaaS资源池提供的稳定、高效、高弹性容器实例服务。ECI让容器成为了公有云的第一等公民,用户无需购买和管理ecs就可以直接部署容器应用,这种简化的容器实例产品形态和ASK形成了一个完美的组合。
用户可以直接使用ECI Open API创建容器实例资源,但在容器场景中用户普遍需要一个编排系统,来负责容器的调度、高可用编排等能力,而ASK正是这样的kubernetes编排层。
对于ASK而言,ECI让ASK容器服务免去了搭建后台计算资源池的必要,更不用为底层计算资源池的容量而担忧。基于ECI就意味着基于整个阿里云IaaS规模化资源池,天然拥有了库存和弹性优势(比如可以通过Annotation的方式指定底层eci对应的ecs规格,大部分ecs规格都可以在ASK中使用,满足多种计算场景的需求)。另外ECI和ECS复用资源池意味着我们可以最大化释放规模化红利,给用户提供更低成本的计算服务。
容器生态支持
ASK对kubernetes容器生态提供了完善的支持,目前已有大量客户使用ASK来支撑如下各种场景。
- CI/CD:gitlab-runner,jenkins/jenkins-x
- 数据计算:spark/spark-operator,flink,presto,argo
- AI:tensorflow/arena
- ServiceMesh: istio,knative
- 测试:locust,selenium
ASK集群不支持Helm v2,近期ACK/ASK会发布Helm v3的支持,之后用户可以非常方便的在ASK集群中部署Charts。
更多ASK参考文档
- 快速部署jenkins环境及执行流水线构建:https://yq.aliyun.com/articles/685219
- 创建Service:https://help.aliyun.com/document_detail/86397.html
- 基于privatezone服务发现:https://help.aliyun.com/document_detail/141685.html
- 创建Ingress:https://help.aliyun.com/document_detail/86398.html
- 使用nginx ingress:https://yq.aliyun.com/articles/727019
- sls日志收集: https://help.aliyun.com/document_detail/86402.html
- 使用kaniko自动化构建镜像:https://yq.aliyun.com/articles/693541
- 使用虚拟节点:https://help.aliyun.com/document_detail/118970.html
- 使用GPU容器实例:https://help.aliyun.com/document_detail/119191.html
- pod挂载eip:https://help.aliyun.com/document_detail/119199.html
- 使用镜像快照加速启动:https://help.aliyun.com/document_detail/141241.html
- 收集pod日志到sls:https://help.aliyun.com/document_detail/131598.html
- 运行Argo workflow:https://yq.aliyun.com/articles/727132
- 使用vk-autoscaler: https://help.aliyun.com/document_detail/131590.html
ASK Examples: https://github.com/AliyunContainerService/serverless-k8s-examples
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务
1. 背景 不知不觉笔者来到流媒体部门已经一年半多了,积攒了不少的流媒体知识,但平时工作也比较忙,很少进行总结性的梳理,最近准备花几个周末时间写一个流媒体系列的实践文章,也算是给自己做总结的同时帮助有需要的开发者; 在这一节中我们主要是通过nginx+rtmp模块搭建一个点播服务,就是你有很多视频文件,想让其他人观看就可以参考这篇文章,和笔者之前的一篇文章 使用PHP结合Ffmpeg快速搭建流媒体服务实践 ,应用场景基本一致,不过这篇文章当中不涉及任何代码,相对来说更加简单。 在这个流媒体系列文章当中,已实践为主,在文章当中的每一条命令都经过笔者亲自运行并提供相关截图,并说明其中参数的来意,希望能够更好的帮助到读者。 2. 运行环境 为了此服务后期部署到生产环境中,笔者采用docker方式来搭建此服务,并且一般在生产环境中我们通常使用Linux系统作为服务器,所以我选择了Ubuntu这个系统,其他系统搭建流程基本类似。 2.1 docker容器 rtmp服务默认端口是1935,另外安装nginx后需要进行验证,需要开放一个http端口,为了防止和宿主机冲突,这里我们使用8081端口;我...
- 下一篇
阿里云上万个 Kubernetes 集群大规模管理实践
内容简介: 阿里云容器服务从2015年上线后,一路伴随并支撑双十一发展。在2019年的双十一中,容器服务ACK除了支撑集团内部核心系统容器化上云和阿里云的云产品本身,也将阿里多年的大规模容器技术以产品化的能力输出给众多围绕双十一的生态公司和ISV公司。通过支撑来自全球各行各业的容器云,容器服务已经沉淀了支持单元化架构、全球化架构、柔性架构的云原生应用托管中台能力,管理了超过1W个以上的容器集群。本文会介绍下容器服务ACK在海量k8s集群管理上的实践经验。 引言 什么是海量k8s集群管理。大家可能之前看过一些分享,介绍了阿里巴巴或蚂蚁金服内部如何管理单集群1W节点的最佳实践,管理大规模的节点是一个很有意思的挑战。不过这里讲的海量k8s集群管理,会侧重讲如何管理超过1W个以上不同规格的k8s集群。跟据我们和一些同行的沟通,往往一个企业内部只要管理几个到几十个k8s集群,那么我们为什么需要考虑管理如此庞大数量的k8s集群?首先,容器服务ACK是阿里云上的云产品,提供了Kubernetes as a Service的能力,面向全球客户,目前已经在全球20个地域支持。其次,得益于云原生时代的发展...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题