Kubernetes结合Docker的优势

174 阅读3分钟
原文链接: blog.didiyun.com

你应该会看到很多关于Kubernetes和Docker的消息,以至于你可能想知道哪个更好。

 

事实上,没有“更好”一说,因为它们所解决的问题是不一样的。Docker就像飞机,而Kubernetes就像飞机场。就像你不可能说“我应该基于哪个去旅行——飞机或者飞机场?”,Docker和Kubernetes也是一样的,你需要它们两个。

 

在这篇文章中,我们将描述一个部署场景,讲述容器和编排工具是如何帮助部署的,以及开发人员每天是如何使用它们。看完这篇文章,你将了解它们在一起的方式。

 

所有事情基于你的本地

 

首先,我们从一个在每次部署中奋斗的人的典型一天开始。然后,我会解释这两种技术如何提供帮助。为了更实际一点,我们虚构一个开发人员John Smith,John是一家为初创公司工作的开发人员,他负责将他的代码部署到实时环境中。

 

John有两个应用程序:一个运行在.NET Core中,另一个运行在Node.js中。 每当新版本的语言、框架或库出来时,他必须进行升级。问题是当他所安装的东西不兼容时,导致app不能正常工作,他需要安装、卸载、更新或删除,直到最终恢复运行。当他完成了这些事情,恢复了运行环境,然后需要在另一个环境再来一次时,问题就更大了,毕竟在短时间内需要记住所有的步骤是非常困难的。

 

一种解决方案是让他使用虚拟机(VM)。这样,他可以隔离所有依赖项,并避免影响任何现有的应用程序及其依赖项。

 

虽然这个解决方案可以起到一定的作用,但不能扩展,为什么?因为每当有所改变时,他必须做新的快照。然后他必须以某种方式组织这些虚拟机快照的所有不同版本。他仍然需要将代码中的更改以及任何依赖部署到其他环境中。当然,他也可能在其他环境出现问题,然后修复它。但是如果是在生产环境时,事情就会变得危险。他必须与类生产环境一起工作来缓解部署并降低风险,这很难做到。

 

即使有自动化,部署也可能过于复杂。也许John甚至不得不花整整一个周末来做部署以及修复各种琐碎的东西。

 

我们都希望部署可以像按下按钮一样简单,这就是Docker和Kubernetes发挥作用的地方。

 

使用Docker来打包并送你的用程序

 

那么,Docker究竟是什么?

 

Docker是一家提供容器平台的公司。容器是一种将软件运行所需要的一切打包并隔离的方法。我说“隔离”的意思是因为容器可以从宿主机分配单独的资源。这听起来与虚拟机非常相似[1],但不同之处在于容器更轻:它们不需要另一个操作系统来运行软件。容器让你变得更加敏捷,并构建安全且便携式应用程序,这样可以让你在完成良好的基础架构时节省一些成本。

 

我知道这听起来像是一本教科书的定义,所以让我们实际看看John生活中的这