Serverless是Kubernetes的终结者吗


【编者的话】对这两种技术进行比较,以停止关于哪种技术更好的争论。什么时候用Kubernetes?什么时候用Serverless?正确的答案是“视情况而定”。顾问和好顾问的区别在于,他们知道许多互补的解决方案,并根据场景找到最佳的解决方案。

哎呀,我又来了。我用了这个醒目的标题来吸引你的注意,抱歉。我需要你的注意来介绍这个大主题,以致于我们能够更好的反思。你认为Kubernetes是DevOps世界里最后一个最好的技术吗?技术是短暂的,你必须为变化做好准备,这也是前所未有的。我爱Kubernetes,我很高兴再次谈论它,它是DevOps场景中最热门的术语。阅读这篇文章,你会找到这个大问题的答案:


这是基础设施管理的最终解决方案,还是我们需要押注于无服务器,从而延长我们离开运营团队的时间?记住,NoOps就要来了。
我认为技术上的变化是很常见的。我们的祖先坐马车旅行,我们坐飞机旅行,这是进步的一部分。

在过去几年中,出现了一场小小的革命,将越来越多的应用程序从虚拟机带到容器中,这主要归功于使用Kubernetes进行部署。

当这场革命发生的时候,有一个小小的强大的时髦词,它就是“Serverless”。大多数人认为它是邪恶的,其他人则认为它像白马王子一样可以把开发者从噩梦中拯救出来。好吧,让我们看看有什么挑战和机会——保持安静,不要威胁到地平!

Kubernetes和Serverless之间的区别是什么?

无服务器是一种云模型,在这种模型中,你希望摆脱服务器和基础设施。这样做的目的是为了避免固定成本,减少投放市场的时间和团队(运维和开发)之间的摩擦。具体来说,假设有一个层可以提取代码并负责执行,那么Serverless就是这样的东西。

你提供代码,供应商提供所有其他的

最常见的无服务器实现具有无状态的容器和SDK,允许你的代码集成到系统中,并根据资源的使用情况向你收费。在大多数情况下,我们可以将我们的功能(“FaaS”,功能即服务)上传到云中,该功能由HTTP调用激活。主要的云提供商也提供类似的云体验:


当然,服务器并没有消失。你看不到它们是因为它们被供应商隐藏了,而供应商使用它们来提供服务。服务器仍然是活动的,但是你看不到任何ram、CPU或磁盘空间。你只需要关注代码,你可以把你的努力放在真正需要的地方。

Kubernetes是什么?以Kubernetes为框架,从简单的Docker镜像开始运行分布式系统。它处理你的扩展需求、部署和负载平衡。所有这些内容都可以使用简单的YAML文件轻松地描述和重用,从而通过设计创建可复制的环境。

Kubernetes是你手头的基础设施

只需更改一些配置文件,你就可以完全控制容器实例(服务和pod)、网络和部署。Kubernetes负责你的扩展需求、故障转移、部署模式等。对于Kubernetes上的新手,我写了一篇很好的Kubernetes入门文章
1.png

与Serverless一样,Kubernetes允许复杂的体系结构,而sysadmin只需很少的工作。这种技术改变了传统的部署方式,即人员密集的部署方式,变得更加智能和快速。嘿,伙计们,NoOps来了!

Kubernetes的优点是什么?

使用Kubernetes的最大优点是,你可以像处理常规服务器群一样处理集群,但是不需要进行物理管理。从逻辑上讲,你可以重新创建服务器和集群组件之间的并行性。你可以实例化pods和服务,就像实例化虚拟机一样,你有网络,存储等等。这意味着可以更深层次地控制所有单个组件,对集群进行低级访问。

因此,我列出了使用Kubernetes代替无服务器平台的优点:
  • 与过去兼容,这一点非常赞。如果你正在容器那么很容易,如果不是,只需要容器化你的应用程序即可。
  • 对发生的事情有很强的控制力。
  • 更少的供应商锁定。Kubernetes就是Kubernetes,Docker容器就是Docker容器。理论上,你可以在一次单击中移动基础设施。
  • 能够微调每一个组件。
  • 也可以运行on-prem(对于开发,或者极端情况,或者你只是疯了)。
  • 预测成本。你为集群的资源付费,这比使用无服务器方法更好地预测资源。


Serverless的优点是什么?

Kubernetes是减少系统管理员工作量的一大进步,但并没有减少到零。基本上,无服务器方法可以避免任何sysadmin组件,因为你只需要关心源代码。这就像挑选一套乐高积木并把它们放在一起。每块砖都是单独工作的,你只需要让他们适当地交流。FaaS解决方案似乎很难实施,因为它们需要转变思维方式。在这种情况下,你可以采用一些更温和的无服务器解决方案,直接托管你的应用程序,而无需更改。这种解决方案的一个很好的例子是Heroku,它从服务器和传统的DevOps中抽象出来,提供了一个NoOps Serverless体验,可以促进应用程序开发,减少所有托管的不愉快。

Serverless是不是Kubernetes的终结?

直到今天,Serverless似乎是新的东西,但AWS Lambda的第一个版本是在2014年。那一年,Docker迈出了第一步(第一次正式发布是在2013年,我不确定它是什么时候准备好投入生产场景的)。2014年诞生Kubernetes。因此,我们可以看出,Serverless是可用的,因为基本与容器是相同的时间的。从这个角度来看,Serverless并不是在Kubernetes之后出现的,我们不能认为Serverless是容器的替代品。它们只是在Web应用程序中实现托管部分的两种不同方法。也许在某些情况下,你更喜欢其中之一。什么时候用Kubernetes?什么时候用Serverless?正确的答案是“视情况而定”。顾问和好顾问的区别在于,他们知道许多互补的解决方案,并根据场景找到最佳的解决方案。

说了这么多,带什么走呢

我们已经讨论了这两种解决方案的优点,最后我们可以告诉你,通过了解技术,你可以为你的场景找到最佳解决方案。使用像谷歌云或其他云这样的大型云服务,你就可以实现任何解决方案。现在是时候试验一下他提供的工具并了解其优缺点了。

原文链接:Is Serverless The End Of Kubernetes?

译者:Mr.lzc,软件工程师、DevOpsDays、HDZ深圳核心组织者,目前供职于华为,从事云存储工作,以Cloud Native方式构建云文件系统服务,专注于K8s、微服务领域。

0 个评论

要回复文章请先登录注册