Kubernetes创始人:Serverless 才是Kubernetes 的未来

从容器革命开始就有两件事情变得清晰起来:首先,技术堆栈中各层的脱钩产生了清晰的,原则性的分层概念,具有明确的约定,所有权和责任。其次,引入这些层使开发人员能够专注于对他们至关重要的事情--应用程序。

公平地说,这已经发生过,第一代平台即服务(PaaS)正式旨在使开发人员能够采用“无服务器计算”体系结构。问题在于,就像在许多第一波产品中一样,太多重叠的概念被混合到一个单一的整体产品中。就大多数第一代PaaS而言,开发人员经验,无服务器计算和定价模式(基于请求的)都是以不可分割的整体形式混合在一起的。因此,可能想要采用无服务器计算但可能满足开发人员要求(例如特定编程语言),或想要大型应用程序的更具成本效益的定价模型的用户不得不放弃无服务器计算。

容器的开发改变了所有这些,从无服务器计算运行时中解耦开发人员的要求。然而,过去一年已经看到无服务器计算容器基础设施的发展并不令人意外。去年七月,Azure发布了Azure容器实例,这是第一个在主要公有云中无服务器计算容器产品。看到重要的用户对无服务器计算基础设施的兴趣,其他公有云遵循Azure的领先地位,Fargate在六个月后在RE:Invent 2017上宣布,我认为在所有公有云中无服务器计算容器基础架构都可用之前只是一个时间问题。

随着我们前进,至少对我来说变得越来越清晰,未来将被容器化,而这些容器将在无服务器计算的基础设施上运行。

那么在这种情况下,一个显而易见的问题就是:“在这个无服务器计算的未来,协调工作会变成什么样子?”

Kubernetes是一种开发用于提供无服务器计算需求的运行容器的技术。但事实是,在低层次上,Kubernetes架构本身支持单个机器,并且从调度器到控制器管理器的组件假定Kubernetes中的容器运行在其可见的机器上。

像Azure容器实例这样的无服务器容器基础架构是原始基础架构。虽然它是轻松运行一些容器的好方法,但构建复杂的系统需要开发一个编排器来引入更高层次的概念,如服务,部署,秘密等。

对于这些无服务器计算平台,开发一个全新的协调器可能是很有吸引力的,但事实是世界正在围绕Kubernetes编排API进行整合,并且与现有Kubernetes工具的无缝集成非常有吸引力。此外,在可预见的将来,我预计大多数人的Kubernetes集群将是专用机器和无服务器计算容器基础设施之间的混合体。专用机器将用于相对静态使用的稳态服务或专用硬件,如FPGA或GPU,而无服务器容器将用于突发或瞬时工作负载。

虚拟Kubelet与Kubernetes和无服务器容器相结合

Kubernetes社区面临的一个有趣问题是如何将无服务器计算容器基础架构与更高级别的Kubernetes概念相结合。最近,开源虚拟kubelet项目的开发在Kubernetes节点和调度特殊利益集团(SIG)内推进了这一讨论。

其核心虚拟kubelet项目旨在弥合无服务器计算容器和Kubernetes API之间的差距。正如从名字中可以看出的那样,虚拟kubelet是Kubernetes kubelet守护进程的替代实现,它将虚拟节点投影到Kubernetes集群中。这个虚拟节点表示无服务器的容器基础设施,使Kubernetes调度程序知道它可以将容器调度到无服务器容器API的事实。

当虚拟kubelet启动时,它将自己注册到Kubernetes API服务器,并立即启动Kubernetes API服务器的心跳协议,以便它添加到Kubernetes的虚拟节点看起来健康。你可以在下面的屏幕截图中看到这个过程。最初有一个标准的Kubernetes集群,其中有三个实际节点存在于集群中。然后,我们开始在此群集中运行虚拟kubelet作为容器,并将第四个节点添加到群集中。这第四个节点是虚拟节点,代表无服务器计算容器基础结构。当然,这个节点实际上是一个相当特殊的节点,因为它代表了在Azure容器实例等无服务器基础设施上运行容器的无限容量。

鉴于在无服务器计算基础架构上运行的容器与在Kubernetes计算机上运行的容器之间的定价和特性的差异,虚拟kubelet要求用户必须显式选择在新虚拟节点上运行容器。为了达到这个目的,虚拟kubelet使用Kubernetes的概念和容忍度。添加时,虚拟节点将标记为Kubernetes污点,防止将任意Pod传送到虚拟节点。只有当一个pod表明它愿意容忍这个无服务器的污点时,它才会考虑调度到虚拟节点上。

一旦将pod安排到无服务器计算虚拟节点上,虚拟kubelet会注意到这一点,并着手在无服务器基础架构中实际创建容器。在无服务器计算基础架构中成功创建Pod之后,虚拟Kubelet还负责将健康和状态信息报告给Kubernetes API服务器,以使所有API和工具按预期工作。

Kubernetes和无服务器计算容器基础架构的这种联合在批处理或突发性工作负载方面有各种实际用例。例如,正在进行图像处理的客户可以快速启动大量容器,以处理最近一次将图像上传到共享存储区,在几秒钟内就可以从无基础架构转移到数百个处理图像的容器,并且在此处理完成后,他们立即回去为容量付钱。这与在虚拟机之上运行的Kubernetes群集形成了鲜明的对比,无论这些机器是否在使用,运行机器的成本都是不变的。同时,这种图像处理的实际编排可以使用标准的Kubernetes概念来实现,例如可以调度所有这些图像处理容器的Job对象。

使Kubernetes与无服务器容器兼容

看到虚拟kubelet项目在云计算行业的发展和增长势头真是令人兴奋,从创业公司到公有云的众多不同合作伙伴加入并贡献了将无服务器容器与Kubernetes结合在一起的愿景。

当然,这并非一帆风顺。就像我们一样

Kubernetes和无服务器计算的未来

Kubernetes的建立是为了给开发人员一个干净的,面向应用的API,使他们忘记了机器和机器管理的细节。但事实是,在这个API表面下,机器还在那里。无服务器计算容器基础架构的发展使人们可以开始完全忘记这些机器,但是为大规模应用程序成功使用无服务器计算容器需要开发一个协调器。因此,Kubernetes编排层和无服务器容器基础架构的集成对Kubernetes和无服务器基础架构的未来成功至关重要。

随着我们迈向未来,我完全相信未来的Kubernetes集群将包含运行在专用机器上的容器组合以及突破无服务器计算基础设施。但是,尽管未来的目的地在我心中是清楚的,但我们如何到达那里的路径和细节仍有待确定。我非常高兴能与Kubernetes社区进行公开讨论。如果你有兴趣参与,请加入我们的虚拟kubelet github项目,或者参加SIG-Node和SIG-Scheduling的邮件列表或会议。我非常高兴能够共同构建这一新一代的容器编排。这就是我们的容器化,无服务器的未来!

作者介绍:

Brendan Burns,Kubernetes的联合创始人,目前任微软分布式工程师。领导微软Azure云容器开发,Azure容器实例化,Azure云shell及资源管理,居住在华盛顿州西雅图市。

Packt.Kubernetes.for.Serverless.Applications.1788620372.PDF Chapter 1, The Serverless Landscape, explains what is meant by serverless. Also, we will get some practical experience of running serverless functions on public clouds using AWS Lambda and Azure Functions. Chapter 2, An Introduction to Kubernetes, discusses what Kubernetes is, what problems it solves, and also takes a look at its backstory, from internal engineering tool at Google to an open source powerhouse. Chapter 3, Installing Kubernetes Locally, explains how to get hands-on experience with Kubernetes. We will install a local single node Kubernetes cluster using Minikube and interact with it using the command-line client. Chapter 4, Introducing Kubeless Functioning, explains how to launch your first serverless function using Kubeless once the Kubernetes is up and running locally. Chapter 5, Using Funktion for Serverless Applications, explains the use of Funktion for a slightly different take on calling serverless functions. Chapter 6, Installing Kubernetes in the Cloud, covers launching a cluster in DigitalOcean, AWS, Google Cloud, and Microsoft Azure after getting some hands-on experience using Kubernetes locally. Chapter 7, Apache OpenWhisk and Kubernetes, explains how to launch, configure, and use Apache OpenWhisk, the serverless platform originally developed by IBM, using our newly launched cloud Kubernetes cluster. Chapter 8, Launching Applications Using Fission, covers the deploying of Fission, the popular serverless framework for Kubernetes, along with a few example functions. Chapter 9, Looking at OpenFaaS, covers OpenFaaS. While it's, first and foremost, a Functions as a Service framework for Docker, it is also possible to deploy it on top of Kubernetes. Chapter 10, Serverless Considerations, discusses security best practices along with how you can monitor your Kubernetes cluster. Chapter 11, Running Serverless Workloads, explains how quickly the Kubernetes ecosystem is evolving and how you can keep up. We also discuss which tools you should use, and why you would want your serverless functions on Kubernetes.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值