Cloud Foundry 基本问题

Cloud Foundry Basic Questions

我是 Cloud 的新手 Foundry/Bosh 并且有一组基本问题。

1) Droplet 与 Garden 容器: 我知道 Droplet 包含源代码 + 构建包,并且这些 Droplet 是在 Garden 容器中执行的。恕我直言,容器很适合运输到其他系统。为什么会有液滴的中间概念?他们自己的容器应该不会产生液滴吗?

2) Diego cell: Diego cell 的作用是什么(我假设它的工作只是 start/stop 花园容器)? Diego cell 是否依赖于平台(例如,特定的 cell 可以 运行 only windows-garden 或其他可以 运行 linux-garden container)?每个容器需要一个细胞吗?

3) 在 Diego Cell 的描述中,我读到“每个应用程序 VM 都有一个 Diego Cell,它在本地执行应用程序启动和停止操作,管理 VM 的容器,并报告应用程序状态和其他数据到 BBS 和 Loggregator。" 这里说的application VM是什么?是容器的意思吗?

4) 让我们假设,我使用 Bosh 创建我的 cloud foundry 实例。一段时间后,我需要将我的系统扩展到两个虚拟机(由于负载增加)。我是否需要为第二个 VM 创建一个新的清单(因为之前的清单也会在此 VM 上部署整个 CF)?

1) Droplet 是一个容器镜像,当您使用 cf push 上传您的应用程序时,它会永久存储。每当系统创建具有相同图像的新容器时(例如,当您重新启动应用程序或扩展到多个实例时),都会重新使用此图像。如果没有 Droplet,您每次需要新实例时都必须重新上传应用程序并创建容器映像。

2) Diego 单元 运行 位于托管许多容器的大型 VM 中。一个典型的 Diego 单元可能有 32G,而一个典型的容器可能有 1G。 Diego cells目前只有运行 Linux-Garden containers.

3) 应用程序虚拟机就是托管 Diego 单元的虚拟机。我发现这句话有点令人困惑,因为我倾向于使用术语 Diego cell 来指代单元软件和托管它的 "application VM"。

4) Bosh 将使用多个 VM 来部署 Cloud Foundry。单 VM 部署确实存在(例如,参见 http://pivotal.io/pcf-dev),但它们未与 Bosh 一起部署。

A container 粗略地说,是一个根文件系统映像,以及一些诸如资源限制和元数据之类的东西,比如要挂载哪些卷,要处理哪些 运行等

Garden 是一个 API 用于创建和 运行ning 容器规范。任何人都可以编写实现 Garden API 的服务器,Cloud Foundry 核心团队维护 garden-linuxgarden-运行Cgarden-windows 实现。

droplet 是一个 "built" 从源代码创建的工件,通常安装或流式传输到 Garden 容器中,然后 运行。有时您不想要一个单独的 Droplet,而是希望将您的根文件系统以及所有源代码 and/or 构建的工件烘焙到一个图像中。然而,通常,您 确实 想要在代表您的代码的液滴与根文件系统之间进行这种分离。一个主要好处是,可以在 Cloud Foundry 平台上的所有租户和所有 运行ning 应用程序中统一修复大多数容器共有的较低级别依赖项中的 CVE,而无需任何开发人员重新推送他们的代码。例如。如果 openssl 之类的东西需要一个新补丁,并且您的 Cloud Foundry 安装有成千上万的开发人员和数十万个 运行ning Garden 容器,如果运营商可以推出会更好openssl 使用单个命令为所有容器打补丁。

Diego 单元 是一个 VM,它是 Cloud Foundry 架构的一部分。 Cloud Foundry 本身是一个分布式系统,不同的组件负责不同的事情。有一个组件负责用户授权和身份验证,有一个组件用于聚合来自应用程序的日志,有一个组件负责提供面向开发人员的 API 以创建、扩展和管理应用程序等。Diego 单元的主要负责将请求发送到 运行 容器化工作负载,并 运行 将它们连接起来。用户对 运行 应用程序的请求由面向用户的 API 使用,并转换为对 Diego 后端的请求。 Diego 本身有几个组件,包括一个调度程序,调度程序的工作是 select 哪个 cell 来完成给定的工作。

您可以认为该单元具有两个组件:(1) 运行ning 容器的 Garden 服务器,以及 (2) 代表 可以代表Garden 服务器到 Diego 调度程序,因此 Garden 没有任何 Diego 特定的知识(Garden 可以独立运行),而是调度程序与同一个单元格上的每个 Garden 的 Diego 代表交谈。

我不确定 "application VM" 在您引用的引文中是什么意思。 Cloud Foundry 上的每个应用程序 运行ning 都可以 运行 具有多个并行实例(用于容错、更好的并发性等)。每个应用程序实例 运行ning 作为某个 Diego 单元中的 Garden 容器。 Cloud Foundry 的生产部署将有许多 Diego 单元。每个单元格可以 运行 许多(最多数百个)花园容器。为了更好的容错,Diego 调度程序将尝试将给定应用程序的实例放置在不同的 Diego 单元中,而不是将它们全部塞进同一个单元中,因为如果那个单元出现故障,您的整个应用程序都会出现故障。

您不需要创建新的清单来扩展 BOSH 部署。只需更改您想要拥有更多 VM 的任何 job/instance 组的 instances 值,然后重新 运行 bosh deploy.