【问题标题】:CloudFoundry - How to understand the operating system(OS) environment of an app?CloudFoundry - 如何理解应用程序的操作系统(OS)环境?
【发布时间】:2019-07-03 03:17:06
【问题描述】:

我们使用 cf push 和下面的清单文件在 Cloud Foundry 上推送一个 Java 应用程序

    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 虚拟机的 vcenter)之上的一层。

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


非云背景,看了这个manifest文件,想明白了……

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

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

【问题讨论】:

标签: cloud-foundry paas iaas


【解决方案1】:

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“容器”中运行,该容器受到内核命名空间和 cgroup 的限制。

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

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

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

在部署方面,CF 会自动为您处理这一切。它可以运行您想要的任意数量的应用实例,并且会自动放置这些实例,以便您的应用能够适应基础架构和 CF 中的故障。

使用 Docker,这取决于您,或者越来越频繁地出现在 Kubernetes 等其他工具上。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多