Serverless Kubernetes 入门:对 Kubernetes 做减法
作者 | 贤维 阿里巴巴高级技术专家
导读:Serverless Kubernetes 是阿里云容器服务团队对未来 Kubernetes 演进方向的一种探索,通过对 Kubernetes 做减法,降低运维管理负担,简化集群管理,让 Kubernetes 从复杂到简单。
背景
Kubernetes 作为通用的容器编排系统,承载了广泛的应用和场景,包括 CI/CD,数据计算,在线应用,AI 等,然而由于其通用性和复杂性,管理一个 Kubernetes 集群对于很多用户而言还是充满挑战的,主要体现在:
- 学习成本高;
- 集群运维管理成本高,包括节点管理、容量规划,以及各种节点异常问题的定位;
- 计算成本在很多场景中没有达到最优,比如对于一个定时运行 Jobs 的集群,长期持有资源池对于用户来说是浪费的行为,资源利用率不高。
对 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 环境及执行流水线构建
- 创建 Service
- 基于 privatezone 服务发现
- 创建 Ingress
- 使用 nginx ingress
- sls 日志收集
- 使用 kaniko 自动化构建镜像
- 使用虚拟节点
- 使用 GPU 容器实例
- pod 挂载 eip
- 使用镜像快照加速启动
- 收集 pod 日志到 sls
- 运行 Argo workflow
- 使用 vk-autoscaler
- ASK Examples
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”
Serverless Kubernetes 入门:对 Kubernetes 做减法的更多相关文章
- Kubernetes入门(一)——Kubernetes v1.18.5 安装部署
Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...
- Kubernetes 入门之Kubernetes 的基本概念和术语
Kubernetes是什么? 他是一个全新的基于容器技术分布式架构领先方案: 他也是一个开放的开发平台: 他也是一个完备的分布式系统支撑平台: Kubernetes的基本慨念和术 ...
- Serverless Kubernetes入门:对kubernetes做减法
背景 Kubernetes作为通用的容器编排系统,承载了广泛的应用和场景,包括CI/CD,数据计算,在线应用,AI等,然而由于其通用性和复杂性,管理一个kubernetes集群对于很多用户而言还是充满 ...
- 第一章 Kubernetes入门
第一章 Kubernetes入门 kubernetes是基于容器技术的分布式架构领先方案,是一个完备的分布式系统支撑平台. kubernetes带来的好处:1)全面拥抱微服务:2)统可以随时随地整体“ ...
- Kubernetes调用vSphere vSAN做持久化存储
参考 1.vSphere Storage for Kubernetes 2.IBM vSphere Cloud Provider 3.GitHub vSphere Volume examples 一. ...
- 微服务 + Docker + Kubernetes 入门实践 目录
微服务 + Docker + Kubernetes 入门实践: 微服务概念 微服务的一些基本概念 环境准备 Ubuntu & Docker 本文主要讲解在 Ubuntu 上安装和配置 Dock ...
- kubernetes 入门学习
kubernetes 学习 kubernetes 简介 Kubernetes这个名字源自希腊语,意思是"舵手",也是"管理者","治理者"等 ...
- Kubernetes权威指南 第一章:Kubernetes入门
Kubernetes是什么 官网 https://kubernetes.io/ 中文版:https://kubernetes.io/zh/ Kubernetes是谷歌十几年大规模容器管理经验的成果 是 ...
- Kubernetes入门(四)——如何在Kubernetes中部署一个可对外服务的Tensorflow机器学习模型
机器学习模型常用Docker部署,而如何对Docker部署的模型进行管理呢?工业界的解决方案是使用Kubernetes来管理.编排容器.Kubernetes的理论知识不是本文讨论的重点,这里不再赘述, ...
随机推荐
- 2019徐州网络赛 I.query
这题挺有意思哈!!!看别人写的博客,感觉瞬间就懂了. 这道题大概题意就是,给一串序列,我们要查找到l-r区间内,满足min(a[ i ],a[ j ]) = gcd(a[ i ],a[ j ]) 其实 ...
- Wood Processing牛客第十场 斜率优化DP
卧槽我感觉写的是对的,但是就是样例都过不了...留坑 #include<iostream> #include<stdio.h> #include<string.h> ...
- zoj 3859 DoIt is Being Flooded (MFSet && Flood Fill)
ZOJ :: Problems :: Show Problem 这题开始的时候想不到怎么调整每个grid的实际淹没时间,于是只好找了下watashi的题解,发现这个操作还是挺简单的. ZOJ3354 ...
- js判断时间格式是否有效
js判断时间格式是否有效 1 短时间,形如 (13:04:06)function isTime(str){var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d ...
- Linux 使用 Speedtest 测试网速
Speedtest的linux客户端是用python写的一个安装包 安装python包管理器pip yum -y install python-pip 如果提示No package python-pi ...
- hdu 2069 Coin Change(完全背包)
Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 最小生成树prim、
过年那几天确实没好好学习.在老家闲着也是闲着.可是就是没看书. 回来这几天又一直在弄个人博客.买域名云服务器备案什么的- -. 麻烦死了呢. 在腾讯花1块钱备案了一个网站www.goodgoodstu ...
- H3C PPP协议的组成
- H3C 在网络中的正确位置配置ACL包过滤
- dotnet core 2.1 使用阶梯编译
在 dotnet core 2.1 可以使用阶梯编译的方法,从 dotnet framework 开始,在代码的所有方法在第一次进入的时候就需要使用 JIT 进行编译为本机的代码.可以看到代码是在第一 ...