Cloud Foundry基本问题

Abh*_*nav 4 cloud-foundry

我是Cloud Foundry/Bosh的新手,并且有一系列基本问题.

1)Droplet vs Garden容器:我知道Droplet包含源代码+构建包,这些小滴在garden容器中执行.恕我直言,集装箱很好运输到其他系统.为什么会出现液滴的中间概念?他们的容器应该不会产生液滴吗?

2)迭戈细胞:迭戈细胞的作用是什么(我认为它的工作只是启动/停止花园容器)?迭戈细胞平台是否依赖(例如,特定细胞只能运行windows-garden或其他可以运行linux-garden容器)?我们每个容器需要一个细胞吗?

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

4)让我们假设,我使用Bosh创建我的云代工实例.一段时间后,我需要将我的系统扩展到两个VM(由于负载增加).我是否需要为第二个VM创建一个新的Manifest(因为早期的清单也将在此VM上部署整个CF)?

Ami*_*pta 9

一个容器是,粗略地说,根文件系统映像连同像资源限制和关于如何安装卷的元数据有些事情,要运行什么程序等

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

液滴是从被典型地安装或流成园容器中,然后运行的源代码创建的"内置"伪影.有时您不需要单独的Droplet,并希望将根文件系统以及所有源代码和/或构建的工件烘焙到单个映像中.但是,通常,您确实需要在代表您的代码的Droplet和根文件系统之间进行此分隔.一个主要的好处是,大多数容器常见的低级依赖关系中的CVE可以在Cloud Foundry平台上的所有租户和所有正在运行的应用程序上统一修复,而无需任何开发人员重新推送其代码.例如,如果需要新的补丁openssl,并且您的Cloud Foundry安装有数千个开发人员和数十万个运行Garden容器,那么如果操作员可以openssl使用单个命令将补丁推广到所有容器,那将会好得多.

迭戈细胞是一个VM这就是Cloud Foundry的架构的一部分.Cloud Foundry本身是一个分布式系统,具有负责不同事物的不同组件.有一个组件负责用户授权和身份验证,有一些组件用于聚合来自应用程序的日志,还有一个组件负责提供面向开发人员的API,用于创建,扩展和管理应用程序等.Diego单元基本上负责接受请求运行容器化工作负载并运行它们.用户运行应用程序的请求由面向用户的API使用,并转换为对Diego后端的请求.Diego本身有几个组件,包括调度程序,调度程序的工作是选择执行给定工作的单元.

你可以把电池已经有两个组成部分:(1)运行的容器一个花园的服务器,和(2)代表可以代表园服务器向Diego调度,所以不是花园有任何迭戈-特定的知识(花园可以以独立的方式运行),调度程序会在同一个单元格中与每个Garden的Diego代表进行对话.

我不确定你提取的报价中的"应用程序虚拟机"是什么意思.在Cloud Foundry上运行的每个应用程序都可以使用多个并行实例运行(用于容错,更好的并发等).每个应用程序实例都在一些Diego单元格中作为Garden容器运行.Cloud Foundry的生产部署将拥有许多Diego单元.每个单元可以运行许多(最多数百个)Garden容器.为了获得更好的容错能力,Diego调度程序将尝试将给定应用程序的实例放在不同的Diego单元格上,而不是将它们全部塞进同一个单元格中,因为如果单个单元格出现故障,则整个应用程序都会关闭.

您无需创建新清单来扩展BOSH部署.只需更改instances要拥有更多虚拟机的任何作业/实例组的值,然后重新运行bosh deploy.

  • 感谢您的详细解释。我还有几个问题:1)Diego单元和VM是否具有一对一的基数(即给定的VM中只有一个单元)?2)创建另一个抽象迭戈单元有什么好处?为什么Diego Scheduler无法直接与Garden容器通信?迭戈细胞是否还有其他功能,我想念吗?3)在Bosh扩展期间-所有VM是否都具有所有CF组件,例如Cloud Controller,CC Bridge,Diego等或Cloud Controller,CC Bridge将仅在一个VM中,而其他将仅具有Diego单元? (2认同)
  • 原因有几个,但主要的原因是与Garden托管在一起的“代表”过程负责将有关本地Garden正在运行的信息传达给中央Diego数据存储。Diego需要维护实际运行状态的中央记录,因此,例如在实际运行的容器少于期望运行的容器的情况下,它可以采取纠正措施。单元通常是运行代表+花园的VM。通常还有其他用于其他用途的VM(例如Cloud Controller)... (2认同)
  • ... BOSH使您可以分别按比例放大组件。您可以分别扩展Cloud Controller,可以分别扩展Cell,等等。此外,将Cloud Controller和Cell放在不同的VM上只是最常见的部署策略。原则上,您可以将所有组件部署到单个VM。或者,您可以将所有非Cell组件部署到单个VM,并将Cell部署为另一个VM。然后独立于其他所有VM向上扩展Cell VM。 (2认同)
  • 感谢您进一步澄清,我仍然有一些后续问题:1)一个Linux VM可以在其上运行多个Diego单元吗?2)在Diego单元内部运行的代表是每个单元一个还是每个容器一个? (2认同)
  • 1.是的,但似乎很浪费。2. Rep是每个单元格一个,而不是每个容器一个。单元格=代表+花园。花园管理多个容器。 (2认同)