共计 1791 个字符,预计需要花费 5 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下 Kubernetes 和 Docker 是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
什么是 Docker?
虽然,我们一直在谈论容器,探讨基于容器的基础设施建设,但其实并没有理解容器技术的真正内涵,不知道这一技术是如何解决企业业务问题的。在笔者看来,容器技术其实就是“服务器管理技术”。为什么这样说? 因为容器技术之所以诞生,最根本原因是服务器管理带来的挑战,尤其是基于 Linux 系统的服务器。
当然,并不是说 Linux 服务器有多复杂,而是因为 Linux 是当今唯一和互联网服务相关的服务器系统,我们需要考虑如何基于互联网服务运行服务器,并确保不受攻击。然而,有时候,太多的服务器支撑是一种资源浪费,因此我们又提出微服务概念。微服务是一个新兴的软件架构, 是把一个大型的单个应用程序和服务拆分为数十个微服务。
针对微服务概念,Linux 在 2006 年推出了一项被称为“cgroups”的技术。Cgroups 是 controlgroups 的缩写, 是 Linux 内核提供的一种可以限制、记录、隔离进程组 (processgroups) 所使用的物理资源 (如:cpu,memory,IO 等等) 的机制。cgroups 为容器实现虚拟化提供了基本保证,是构建 Docker 等一系列虚拟化管理工具的基石。但是,如果你不太熟悉 Linux 内核技术,那么使用 cgroups 其实并不是一件特别容易的事,这也是 Cgroups 为什么不为人所知的根本原因之一。
Docker 的出现,提供了一个比 cgroups 更方便的 Linux 服务器管理工具。Docker 太好用了,以至于很多人都没有意识到自己使用的正是 Linux 内核技术。借助 Docker,开发者可以在一台服务器上运行多个应用,所有应用完全使用沙箱机制,相互之间不会有任何接口,这种隔离机制大大确保了各个应用之间的安全性。其中,Docker Swarm 是 Docker 的最核心工具之一,该应用可以把不同的服务器组合成一个集群。当管理多个服务器时,这种集群效应就开始发挥作用。
所以,当我们谈容器,尤其是 Docker 时,其实我们基本上谈论的是 Linux 内核技术。
什么是 Kubernetes?
那么,Kubernetes 又是什么? 我们为什么需要它? 要想更好地理解这一点,你可以假设一个应用场景: 有一个数据中心,有数以千计的服务器,运维人员不只是维护一个微服务,而是成千上万个,这时我们必须借助一个大的操作平台来管理。因此,Kubernetes 才有了成长沃土。
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在 Kubernetes 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
为什么要用 Docker,而不是 Kubernetes?
我们为什么要使用 Docker,而不是 Kubernetes。如前文所述,当我们在谈论容器技术时,其实重点是 Linux 内核技术。如果你希望在项目中使用容器,那么应该对 Linux 有一点经验。Docker 容器整合了 cgroups 技术,提供了一个更理想的工具集,实现了 container 的资源的隔离和控制。
Kubernetes 这项技术并不适用于小型公司,更不适合单个 web 项目的运营。尽管,理论上也能用,但是会“大材小用”,就像我们不会乘着火箭去度假一样。当然,我们不是要打压 Kubernetes,这是一项很棒、还免费的技术,但是并不是所有的技术都适合自己。我们要扪心自问下,是否真的需要这钟技术。Kubernetes 更适用于一个架构庞大、且应用不断增长的环境,比如:谷歌、亚马逊、微软这样大的互联网公司。
另外,相比 Kubernetes,构建一个轻量级 Docker 群集环境更容易,其中有很多酷炫的功能和特性。
以上是“Kubernetes 和 Docker 是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!