如果您每次听到有人提到“Kubernetes”、“容器”或“Pod”时都会走神,那么这篇文章适合您。本文不会涉及复杂的图表!
作为前端开发人员,您无需从头开始配置基础设施。但是,如果您对它的工作原理有基本的了解,您就可以更独立地部署和回滚应用程序,并且在讨论此主题时也能获得更多信息。
让我们从网络搜索什么是 Kubernetes 开始。
Kubernetes 是一个开源的容器编排系统,用于自动化计算机应用程序的部署、扩展和管理。
—维基百科
好的,但是什么是容器呢?

简单来说,容器就像一台虚拟计算机,您可以远程创建、使用、销毁和重新启动它。
现在想象一下,这台计算机实际上位于云端,与数千台其他虚拟计算机一起运行。所有这些都在一台功能强大的真实计算机上运行。您的计算机现在是云中的一个容器。

但是等等——您将如何创建和控制这台虚拟计算机?它将如何与同一云中的其他计算机通信?它将如何与外部世界通信?听起来您需要一种方法来编排所有这些。因此:我们的指挥家,Kubernetes(简称 K8s)!

您可能还听说过Pod这个术语。它们是什么,它们在这里扮演什么角色?简单来说,Pod 是一个或多个容器的组。它们是 K8s 中最小的可部署单元,就像原子一样。
假设您正在构建一个 WordPress 网站,并且需要一台运行 PHP 和 MySQL 数据库的计算机。在同一台计算机上运行两者可能过于繁重;因此,您可以为 PHP 创建一个容器,为 MySQL 创建一个容器,K8s 将帮助它们进行通信。
然后,您将这两个容器分组到一个 Pod 中,该 Pod 代表整个应用程序。这意味着您现在可以通过 Pod 启动和终止整个应用程序。

不过,您可能不会只创建一个 Pod 来在生产环境中部署应用程序——还有更多内容我们现在不需要讨论,但是 您可以在 K8s 文档中阅读有关 Pod 的更多信息。
现在是时候问一个问题:在这种设置中部署应用程序时会发生什么?
K8s 创建一个新的 Pod,将流量重定向到它,并且当它确定一切正常时,它会终止旧的 Pod。同样,还有更多实体参与控制和重定向请求,但我们今天不讨论这些。
但是,有时部署会破坏某些东西,我们需要将应用程序回滚到以前的版本。想象一下,一切都着火了,我们必须从头开始启动所有这些计算机——安装 Linux、Node、Git、克隆存储库、安装依赖项、构建应用程序……这将花费很长时间!如果有一种更快的方法,例如从过去获取快照以快速恢复一切……

登场:镜像!您可能也经常听到这个词。镜像就像一个容器的备份,其中已经安装并配置了所有内容。每次您推送到存储库的主分支时,都会使用您的持续集成 (abbr>CI) 生成一个新的镜像,然后在创建新容器时将其复制到新容器中。
它们有什么用?主要有两个方面:第一个是快速恢复到以前的镜像,就像我们上面的示例一样。但是,当您的网站流量很大,一台计算机无法处理时,它们也很有用。
拥有镜像后,您可以创建任意数量的相同容器,并在所有容器之间复制该镜像,从而提供完全相同的内容。

完成了!我们刚刚介绍了应用程序基础设施的工作原理,现在希望您能够将其扩展到您的项目正在使用的任何工具。
非常感谢 Eduardo Shiota 让我能够解释这一点!
酷
很棒的解释
感谢您将其简短且易于理解……。
简单而酷的解释
这很棒。我当然会感谢更多“傻瓜基础设施”系列文章,这始终是我难以理解的领域。
非常感谢您的精彩解释。如果您能像这样解释微服务中的其他概念,那就太好了
很棒,易于理解的文章!我想看看 Docker 和 Kubernetes 之间的比较;现在我已经了解了后者是什么,我对为什么它在 Docker 的主菜单中感到困惑。这两个似乎是竞争对手。
Docker 是一组容器创建和运行应用程序、运行时、镜像构建等的集合,除了提供基本控制之外,它不做太多其他事情,K8s 对容器的管理更多,例如日志聚合、负载均衡、扩展和缩减、监控等。
感谢您的解释。您使它变得非常容易理解。现在进一步阅读不会像我最初想象的那样复杂
解释得非常好,事实上我两天前听到过 Kubernetes 这个词,并且想知道它到底是什么。您的文章非常完美,并且呈现得非常漂亮。再次感谢,期待您未来的文章。
Satish Tripathi
不错的解释,谢谢!!