Kubernetes 是一个开源容器编排系统,用于自动化计算机应用程序的部署、扩展和管理。 ——维基百科
简单来说,容器就像一台虚拟计算机,你可以远程创建、使用、销毁和重启。
现在想象一下这台计算机实际上是在云中,与数千台其他虚拟计算机一起运行。所有这一切都在一台真正强大的计算机上运行。您的计算机现在是云中的容器
但是等等 — 你将如何创建和控制这台虚拟计算机?它将如何与同一云中的其他计算机通信?它将如何与世界沟通?听起来您需要一种方法来协调所有这些。因此:我们的大师,Kubernetes(或简称 K8s)
您可能还听说过豆荚这个词。这些是什么,它们适合这里的什么地方?好吧,简单地说,pods 是一组一个或多个容器。它们是 K8s 中最小的可部署单元,就像一个原子。
想象一下,您正在构建一个 WordPress 网站,并且需要一台运行 PHP 和 MySQL 数据库的计算机。在同一台计算机上运行两者可能太重了;所以你可以改为为 PHP 创建一个容器,为 MySQL 创建一个容器,K8s 将帮助它们进行通信。
然后,您将这两个容器分组到一个 pod 中,它代表整个应用程序。这意味着您现在可以通过 pod 启动和终止整个应用程序。
您可能不会只创建一个 pod 来在生产中部署应用程序,尽管 — 我们现在不需要介绍更多内容,但您可以在 K8s 文档中阅读有关 pod 的更多信息。
现在是提问的好时机:在这种设置中部署应用程序时会发生什么?
K8s 创建一个新的 pod,将流量重定向到它,当它确定一切正常时,它会杀死旧的 pod。同样,更多实体参与控制和重定向请求,但我们今天将其排除在外。
但是,有时部署会破坏某些内容,我们必须将应用程序回滚到以前的版本。想象一下,一切都着火了,我们必须从头开始启动所有这些计算机 — 安装 Linux、Node、Git,克隆存储库,安装依赖项,构建应用程序……这将花费很长时间!要是有更快的方法就好了,比如从过去拍摄快照以快速将所有内容恢复到......
输入:图像!您可能也经常听到这个词。一个镜像就像一个容器的备份,所有东西都已经安装和配置好了。每次推送到存储库的主分支时,都会使用持续集成 (abbr>CI) 生成一个新映像,然后在创建新容器时将其复制到新容器中。
它们有什么用?嗯,主要有两件事:第一件事是快速恢复到以前的图像,就像我们上面的例子一样。但是,当您的网站有大量流量并且只有一台计算机无法处理时,它们也很有用。
当您拥有一个镜像时,您可以根据需要创建任意数量的相同容器,并在所有容器中复制该镜像,提供完全相同的内容。
全部完成!我们刚刚介绍了应用程序基础架构如何工作的基础知识,现在希望您可以推断出您的项目正在使用的任何工具。
from comments -----------------------------
Docker 是容器创建和运行应用程序、运行时、镜像构建等的集合,除了提供基本控制之外,它没有做太多事情,K8s 管理您的容器更多,日志聚合,负载平衡,缩放,监控等