一文了解 Kubernetes 与 Docker
发布时间:2022-07-04 14:16:59 所属栏目:云计算 来源:互联网
导读:两个最具影响力的云计算开源项目之间的异同。 Kubernetes vs. Docker 是一个在云计算行业被多次提及的话题。无论你来自非技术背景,需要快速介绍,还是需要做商业决策,我都希望以下几点能一劳永逸地澄清这件事。 我们需要超越围绕 Kubernetes 和 Docker 的
两个最具影响力的云计算开源项目之间的异同。 Kubernetes vs. Docker 是一个在云计算行业被多次提及的话题。无论你来自非技术背景,需要快速介绍,还是需要做商业决策,我都希望以下几点能一劳永逸地澄清这件事。 我们需要超越围绕 Kubernetes 和 Docker 的炒作。这些词的意思很重要,在它们之上运行您的业务之前要掌握。 现在,为什么首先需要有多个节点?其背后的两个主要动机是: 1. 使基础设施更加健壮——即使某些节点离线,您的应用程序也将在线,即高可用性。 2. 使您的应用程序更具可扩展性——如果工作负载增加,只需生成更多容器和/或向 Kubernetes 集群添加更多节点。 Kubernetes 和 Docker 之间的差异 原则上,Kubernetes可以使用任何容器化技术。Kubernetes 可以集成的两个最流行的选项是 rkt 和 Docker。然而,Docker赢得了最大的细分市场,这导致在完善 Docker 和Kubernetes 之间的集成方面付出了很多努力,比任何其他容器化技术都多。 同样,Docker背后的公司 Docker Inc. 也提供了自己的容器编排引擎,名为 Docker Swarm。但即使是他们也意识到 Kubernetes 已经上升到甚至 Docker for Desktop(MacOS 和 Windows)都带有自己的 Kubernetes 发行版。 如果有人对在基于 Docker 的产品中采用 Kubernetes 感到紧张,那么最后一点将消除所有疑虑。这两个项目都全心全意地相互拥抱,并从这种共生关系中受益匪浅。 Kubernetes 和 Docker 之间的相似之处 这些项目不仅仅是技术,它们是一个人的社区,尽管存在差异,但由业内一些最聪明的人组成。当志同道合的人合作时,他们会交换聪明的想法并相互学习最佳实践。 这些是Kubernetes 和 Docker 共享的一些想法: 1. 他们对基于微服务的架构的热爱(稍后会详细介绍)。 2. 他们对开源社区的热爱。两者都是主要的开源项目。 3. 它们主要是用 Go 编写的,因此可以将它们作为小型轻量级二进制文件发送。 4. 他们使用人类可读的 YAML 文件来指定应用程序堆栈及其部署。 从理论上讲,您可以在不了解另一个的情况下了解其中一个。但请记住,在实践中,如果您从 Docker 在单机上运行的简单案例开始,然后逐渐了解 Kubernetes 如何发挥作用,您将受益更多。 什么是 Docker? 有两种看待 Docker 的方式。第一种方法涉及将 Docker 容器视为真正的轻量级虚拟机。第二种方法是将 Docker 视为软件打包和交付平台。后一种方法被证明对人类开发人员更有帮助,并导致该技术得到广泛采用 Docker 容器概述: 传统上,云服务提供商使用虚拟机将正在运行的应用程序相互隔离。管理程序或主机操作系统为许多客户操作系统提供虚拟 CPU、内存和其他资源。每个来宾操作系统都像在实际物理硬件上运行一样工作,理想情况下,它不知道在同一物理服务器上运行的其他来宾操作系统。VMware 是最早普及这一概念的公司之一。 现在,您不再为 VM 提供虚拟硬件,而是为应用程序提供虚拟操作系统。如果需要,您可以运行多个应用程序并对其资源利用率施加限制,并且每个应用程序都将在运行时忽略与其一起运行的数百个其他容器。 Docker——作为开发者的工具: 开发人员面临的问题之一是运行应用程序的生产服务器与开发应用程序的他们自己的开发机器(通常是笔记本电脑和工作站)之间的差异。假设您在桌面上运行 Windows 10,但您想为 Ubuntu 18.04 编写应用程序。也许您正在使用 Python v3.6 来编写您的应用程序,而 Ubuntu 服务器仍在运行 3.4。 有太多的变量需要考虑,所以我们使用 Docker 来抽象出这种复杂性。Docker 可以安装在任何操作系统上,甚至 Windows 和 Mac OS X 都得到很好的支持。因此,您可以将代码打包到 Docker 映像中,使用 Docker 在本地运行和测试它,以确保从该 Docker 映像创建的容器在生产中的行为方式相同。 注意:所有依赖项,如编程语言版本、标准库等,都包含在该映像中。 这种将Docker 镜像视为软件包的方式导致了以下流行语录: 包管理器Apt 仍然在底层使用 tar,但用户永远不必担心它。同样,在使用 Docker 时,我们永远不必担心包管理器,尽管它仍然存在。即使在 Node.js 技术之上进行开发时,开发人员也更喜欢在 Node 的官方 Docker 镜像之上构建他们的 Docker 镜像。 所以,这是对 Docker 是什么以及为什么即使他们没有参与 DevOps 也可能想了解它的一个简要概述。现在让我们继续 Kubernetes。 Kubernetes 架构的简要概述将帮助我们阐明它如何设法实现所有这些以及更多。 Kubernetes 架构 — 简要概述: 关于 Kubernetes 集群,您需要了解两个基本概念。第一个是节点。这是 Kubernetes 管理的 VM 和/或裸机服务器的通用术语。第二个术语是 pod,它是 Kubernetes 中的基本部署单元。Pod 是需要共存的相关 Docker 容器的集合。例如,您的 Web 服务器可能需要与 Redis 缓存服务器一起部署,以便您可以将它们两者封装到一个 Pod 中。Kubernetes 并排部署它们。如果这对您来说更简单,您可以完全想象一个由单个容器组成的 pod,那就没问题了。 回到节点,有两种类型的节点。一个是主节点,其中安装了 Kubernetes 的核心,它控制着应用程序实际运行的各个工作节点之间的 pod 调度。主节点的工作是确保维持集群的期望状态。 (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |