CloudFoundry-如何了解应用程序的操作系统(OS)环境?

时间:2019-02-08 20:41:52

标签: cloudfoundry pivotal-cloud-foundry paas iaas

我们使用带有以下清单文件的cf push将Java应用程序推送到Cloud Foundry上

    applications: 
       - name: xyz-api 
         instances: 1 
         memory: 1G 
         buildpack: java_buildpack_offline 
         path: target/xyz-api-0.1-SNAPSHOT.jar

我了解到,PAAS(例如:Cloud Foundry)是IAAS(例如,托管Linux和Windows VM的vcenter)之上的一层。

在清单文件中,buildpack仅讨论运行应用程序所需的用户空间运行时库。


来自非云背景,并且阅读了此清单文件,我想了解...

1)如何了解应用程序正在运行的操作系统(OS)环境?在哪个操作系统上...

2)在bosh实例上运行的应用程序与docker容器有何不同?

1 个答案:

答案 0 :(得分:2)

  

1)如何了解应用程序正在运行的操作系统(OS)环境?在哪个操作系统上...

堆栈确定您的应用将在其上运行的操作系统。清单中有一个stack属性,或者您可以使用cf push -s来指示堆栈。

您可以运行cf stacks来查看所有可用的堆栈。

在撰写本文时,在大多数环境中,您将拥有cflinuxfs2。这是Ubuntu Trusty 14.04。它会被cflinuxfs3所取代,后者是Ubuntu Bionic 18.04,因为Trusty仅支持到2019年4月。尽管您将始终拥有一些cflinuxfs*堆栈,但是数量会根据阅读本文的时间而有所不同。

在某些环境中,您可能还具有基于Windows的堆栈。原始的基于Windows的堆栈是windows2012r2。在我撰写本文时,这已经很老了,所以您可能再也看不到它了。您可能会看到windows2016或更新的内容,具体取决于您何时阅读。

如果您需要更多控制权,可以随时推送Docker容器。这样一来,您就可以为应用选择完整的操作系统映像。

  

2)在bosh实例上运行的应用程序与docker容器有何不同?

运行在Cloud Foundry上的应用程序不是由BOSH直接部署的。该应用程序在容器中运行。该容器由Diego安排和运行。 Diego是BOSH部署的VM。所以那里有一个额外的层。

从根本上讲,在Cloud Foundry上运行应用程序与在Docker容器中运行应用程序之间的差异很小。它们都在Linux的“容器”中运行,内核名称空间和cgroups对其施加了限制。

区别在于a。)如何构建容器和b。)容器的部署方式。

使用Cloud Foundry,您无需构建容器。您可以将应用程序提供给CF,CF会根据所选堆栈和buildpacks添加的其他软件来构建容器映像。 CF术语中的输出称为“液滴”,但它基本上是OCI映像(在buildpacks v3中甚至更是如此)。当您需要升级或添加新代码时,只需重复该过程并再次推送即可。堆栈和buildpacks会由平台自动更新,它们将依次为您提供补丁程序和最新的应用程序映像。

使用Docker,您可以手动创建映像,从头开始或从某些受信任的基础映像建立它。您添加自己的运行时和应用程序代码。当您需要升级时,就可以从基础映像和运行时中获取更新,或更糟的是从头开始更新映像。

在部署时,CF会自动为您处理所有这些。它可以运行您想要的应用程序的任意数量的实例,并会自动放置这些实例,以便您的应用程序能够抵抗基础结构和CF中的故障。

有了Docker,您就可以使用它,或者越来越多地使用Kubernetes之类的其他工具。

希望有帮助!