docker + kubernetes=共生?相爱相杀? - 知乎

在过去几年中,容器改变了软件开发和部署的面貌。因此,越来越多人在讨论“Kubernetes vs Docker”的问题。最初的讨论可能令人困惑,因为Docker和Kubernetes不是直接竞争对手。

Kubernetes与Docker之间的共生关系
Kubernetes与Docker之间,一个并不是另一个的替代品。恰恰相反,Kubernetes可以在没有Docker的情况下运行,而Docker可以在没有Kubernetes的情况下运行。但Kubernetes可以(而且确实)从Docker中获益匪浅,反之亦然。
Docker是一个独立的应用程序,可以安装在任何计算机上运行容器化应用程序。容器化是一种在虚拟运行应用程序的方法,使得应用程序与系统的其余部分隔离。Docker实现在单个操作系统上运行、创建和管理容器。
Kubernetes把它变成了集群。如果在一堆主机(不同的操作系统)上安装了Docker,则可以利用Kubernetes。这些节点或Docker主机可以是裸机服务器或虚拟机,通过Kubernetes可以允许从单个节点上,进行容器的配置,实现负载平衡、安全性和自由扩展。由单个Kubernetes实例管理的节点集合称为Kubernetes集群。

现在,为什么需要首先拥有多个节点?这主要是有两个原因:
1)使基础架构更加稳定,即高可用性,即使某些节点脱机,您的应用程序也将在线。
2)使应用程序更具可伸缩性, 如果工作负载增加,只需生成更多容器或向Kubernetes集群添加更多节点。
Kubernetes是自动化扩展、管理、更新和删除容器的过程, 换句话说,它是一个容器编排平台。 虽然Docker是容器化的核心,但它让我们首先能够拥有容器。
Kubernetes和Docker之间的差异
原则上,Kubernetes可以使用任何容器化技术。 Kubernetes可以集成的两个最流行的选项是rkt和Docker。 然而,Docker赢得了最大的细分市场,并且在完善Docker和Kubernetes之间的集成方面付出了很多努力,比任何其他容器化技术都要多。
同样,Docker公司提供了自己的容器编排引擎,名为Docker Swarm。 但即使他们意识到Kubernetes已经发展到甚至Docker for Desktop(Mac OS和Windows)都带有自己的Kubernetes发行版的事实。

如果有人对采用基于Docker的产品,采用Kubernetes感到担忧,那么最后一点就可以摆脱所有的疑虑。 这两个项目都全心全意地相互拥抱,并从这种共生中获益匪浅。
Kubernetes和Docker之间的相似之处
这些项目不仅仅是技术,它们是一个活跃的社区,尽管存在差异,但都是由业内一些最专业的人员组成的。当这些志同道合的人合作时,他们会交换彼此的想法并相互学习最佳实践。
这些是Kubernetes和Docker共享的一些想法:

  • 他们对基于微服务的架构的热爱。
  • 他们热爱开源社区,两者都是开源项目。
  • 主要用Go编写,允许它们作为小型轻量级二进制文件发布。
  • 使用人类可读的YAML文件来指定应用程序堆栈及其部署。

对于Kubernetes和Docker,从理论上讲,用户可以在不了解对方的情况下了解一个。但在实践中,如果从简单的Docker在一台机器上运行开始,然后逐渐了解Kubernetes如何发挥作用,您将受益更多。


Original url: Access
Created at: 2019-04-30 18:21:11
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论