Serverless Kubernetes 入门:对 Kubernetes 做减法

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Serverless Kubernetes 是阿里云容器服务团队对未来 Kubernetes 演进方向的一种探索,通过对 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 节点,虚拟节点的容量可以认为是“无限大”,用户不需要为集群的容量担忧,无需预先做容量规划。

2.png

无 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 参考文档

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
111 2
|
2月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
2月前
|
Kubernetes Cloud Native 开发者
云原生入门:Kubernetes的简易指南
【10月更文挑战第41天】本文将带你进入云原生的世界,特别是Kubernetes——一个强大的容器编排平台。我们将一起探索它的基本概念和操作,让你能够轻松管理和部署应用。无论你是新手还是有经验的开发者,这篇文章都能让你对Kubernetes有更深入的理解。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
2月前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
140 3
|
2月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
57 3
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
2月前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
2月前
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
67 0
|
3月前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。

相关产品

  • 容器服务Kubernetes版
  • 函数计算