Kubernetes 与 Docker 概述
理解 Kubernetes 与 Docker 的区别,是云原生和 DevOps 中的一个重要主题。虽然现实中一谈到 Kubernetes 就必然会提起 Docker,但事实上这两者不能相互比较。Kubernetes 和 Docker 并不构成直接竞争关系。相反,它们是能够相互协作、相互补充的两种技术。
对于 Kubernetes 和 Docker,您将遇到哪些场景呢?对此,您首先要了解这两者有哪些不同,在哪些方面存在重叠。
了解 Docker
Docker 是一个面向应用容器的开源平台。其中,容器是一个独立封装格式,能够将所有必需代码和依赖关系封装到一个可执行格式中。您可以将它看作一个包含一张桌子的所有部件、支架和螺丝(当然还有六角扳手)的 IKEA 包裹,区别在于容器可以在您执行的时候为您“搭好桌子”。
得益于轻量和标准化格式这两个优点,Docker 深受开发人员的喜爱。它让开发人员能够灵活、可扩展地构建、测试和部署应用。
Docker 在 IT 行业中还有另一重含义,即 Docker, Inc,这是一家为 Docker 平台开发工具的公司。在使用中,请注意区分 Docker 的含义。
了解 Kubernetes
如果说 Docker 是一个容器,那么 Kubernetes 就是一个可同时管理多个容器的工具。和 Docker 平台(不是 Docker 公司)一样,Kubernetes 也是一个开源平台,它是云原生计算基金会管理的一个项目,拥有超过 2300 名贡献者。Kubernetes 面向云的运行方式与操作系统类似,它能够理顺和简化跨虚拟机和跨云管理,助力 IT 部门规模化地完成任务。
Kubernetes 可以做什么?Kubernetes 的运行方式与本地系统上的所有系统管理类似,区别只在于它面向的是容器。它可以执行容器供应、更新、调度、删除以及运行状况监视工作。如果说容器是一个 IKEA 包裹,那么 Kubernetes 就是 IKEA 仓库中负责下单、配送以及检查桌子、椅子和其他包装家具状态的设施经理。
其他容器运行时
所有关于 Docker 和 Kubernetes 的讨论都很容易遗漏一点,那就是什么是容器运行时。什么是容器运行时呢?简单来说,它是一个用于运行容器的引擎,就像 IKEA 包裹中的装配说明书一样。在某些情况下,低级容器运行时就能处理执行管理工作。在某些复杂场景中,高级容器运行时可以提供 API 集成、镜像格式和镜像管理指导。某些时候,容器运行时和 Docker 可以互换使用,尽管二者之间存在细微差别。
Kubernetes 运行一个 API,即容器运行时接口 (CRI)。CRI 接口可以连接每个容器运行时,以此来执行包。对于 IKEA 包裹(容器),Kubernetes 的 CRI 就相当于负责读取装配说明书(容器运行时)的那个人。
除了 Docker,如今市场上还有其他容器运行时。以下是 Docker 以外广为流行的两个容器运行时:
Containerd: Containerd 最初是 Docker 项目的一部分。但是,它的目标是让 Docker 更灵活、更模块化,这促使开发人员将其分离为一个单独项目。Containerd 可发挥高级容器运行时作用,例如从注册表拉取镜像、镜像管理,以及与低级运行时集成,从而执行容器流程。
CRI-O:CRI-O 同样是一个可代替 Docker 的开源容器运行时。它可以实施 Kubernetes 容器运行时接口 (CRI),启用与开放容器计划标准兼容的运行时。
CRI-O and Containerd 都遵守 CRI 的规范,与 Kubernetes 完全兼容。
Docker 和 Kubernetes 有何区别?
人们经常讨论 Docker 与 Kubernetes 有什么区别,但事实上这二者并不构成直接竞争关系。本文通过 IKEA 的示例介绍了它们的关系以及为何它们对于现代 IT 管理至关重要。无论从哪一个方面来讲,它们都不是竞争对手。相反,它们都是云原生生态系统的一部分:Docker 由 Kubernetes 管理,Kubernetes 能够轻松扩展 Docker 容器的规模。
因此,IT 主管的问题不是该选择 Docker 还是 Kubernetes,而是如何协同使用 Kubernetes 和 Docker 来满足运营和管理需求。
Docker 和 Kubernetes 如何协同工作?
Kubernetes 和 Docker 可协同工作。如果只需要管理一个 Docker 部署,Kubernetes 不是必需的。但如果要管理多个 Docker 部署实例,Kubernetes 可发挥切实有效的协同效应,尤其是在需要通过扩展,使用同一应用的多个部署时。作为一种开源工具,Kubernetes 编排系统可确保您持续获得支持,高效解决跨多个服务器的复杂性问题。
使用 Kubernetes,您可以通过补丁和更新的批量处理以及规模化问题监视等特性,轻松部署和管理多个 Docker 包,同时高效处理用户的个性化请求。使用 Kubernetes,IT 部门可以:
在基础设施上部署 Docker 容器
按需扩展 Docker 容器并扩展或缩减资源
按需供应、调度或删除容器,执行容器更新
监视 Docker 容器实例运行状况
适用于 Kubernetes 和 Docker 的 Oracle 工具
Oracle Cloud Infrastructure 提供一系列服务来帮助企业和用户提高速度,构建现代云原生应用。例如,可靠、免费(随附)的 Container Engine for Kubernetes 和容器注册表可管理和分析 Docker 镜像,理顺管理工作,提高性能。您可以免费试用 Oracle 云,访问 Kubernetes 以了解更多信息。
免费试用云产品