【问题标题】:How to deploy a large docker image to Pivotal Cloud Foundry如何将大型 docker 映像部署到 Pivotal Cloud Foundry
【发布时间】:2019-08-31 18:15:38
【问题描述】:

我正在尝试将此 docker 映像推送到我的 PCF 环境:

https://hub.docker.com/r/jupyter/tensorflow-notebook/tags/

提取时图像为 3.9GB。

当我这样做时:

cf push jupyter-minimal-notebook --docker-image jupyter/minimal-notebook -m 8GB -k 4G

我得到错误:

应用无效:disk_quota 请求的磁盘过多(请求的 4096 MB - 必须小于 2048 MB)

应用程序获取的默认磁盘空间默认为 1024mb。这是在default_app_disk_in_mb 参数中的cloud_controller_ng 中设置的。

默认情况下,用户可以请求的最大磁盘量为 2048mb。这是在maximum_app_disk_in_mb 参数中的cloud_controller_ng 中设置的。

我相信解决方案是增加 maximum_app_disk_in_mb 的值,但是经过大量搜索后我无法弄清楚如何设置它。

我在manifest.yml中尝试了以下方法:

---
applications: 
- name: jupyter-tensorflow-notebook
  docker: 
    image: jupyter/tensorflow-notebook
  cloud_controller_ng:
    maximum_app_disk_in_mb: 4096
  disk_quota: 4G
  memory: 8G
  instances: 1

这不起作用并返回相同的错误:

应用无效:disk_quota 请求的磁盘过多(请求的 4096 MB - 必须小于 2048 MB)

2019 年 9 月 3 日更新:

我没有提供足够的背景信息。我已经使用 AWS 快速入门在 AWS 上设置了一个小型 PCF 环境,因此我可以完全控制部署以调整我想要的任何参数。实际上,我是平台运营商。所以问题是,鉴于我有权对maximum_app_disk_in_mb 进行更改,我将如何去做呢?我想更改maximum_app_disk_in_mb 参数,但如果不重新部署整个环境,我看不到如何做到这一点。

要获取快速入门中使用的清单,我认为我需要执行以下操作:

bosh -e aws -d [my-deployment] manifest

据我了解,这是完整的清单。里面有很多可变参数如((cloud-controller-internal-api-user-credentials.password))等。

有没有办法在不重新部署完整清单的情况下更新maximum_app_disk_in_mb

如果我必须重新部署完整的清单是这样做的最佳方法:

bosh -e aws -d [my-deployment] manifest > manifest.yml

然后在manifest.yml中编辑maximum_app_disk_in_mb参数值并重新部署?如果我这样做,它会获取在清单中使用变量的参数的所有值,例如((cloud-controller-internal-api-user-credentials.password))

当我这样做时:

bosh -e aws deployments

似乎有两个部署,aws-service-broker-xxxxxxxxxxxxxxxcf-xxxxxxxxxxxxxxxx(为了匿名,我用 x 替换了 id)。前者没有任何正在运行的实例,所以我想我不需要对那个进行任何更改?

【问题讨论】:

  • Is there a way to update maximum_app_disk_in_mb without redeploying the complete manifest? -> 是和不是。您可以随时 ssh 进入云控制器并调整配置文件 monit restart 云控制器进程,它会应用您的更改。但是,除了重新创建您的云控制器 VM 之外,这不会持续存在。要使更改生效,您需要编辑部署清单和bosh deploy
  • If I do this will it pick up on all the values for parameters that are using variables in the manifest such ((cloud-controller-internal-api-user-credentials.password))? -> 您可能需要在 bosh deploy 时指定值,或者它可能会从 CredHub 中提取它们,这取决于您的设置方式。我不知道 AWS 快速入门,所以我不知道它是如何配置的。对不起。
  • 你现在问的是一个完全不同的问题。您应该打开一个新的 SO 帖子。

标签: docker cloud-foundry


【解决方案1】:

首先我要说的是,作为 Cloud Foundry 的开发人员/最终用户,您无法更改 Cloud Controller 中的设置,这是一个系统级组件。只有您的操作员才能做到这一点。

如果您可以更改 Cloud Controller 中的设置,这将使 Cloud Controller 和您的平台运营商设置的所有限制无效,因为您可以将它们设置为您想要的任意高。

Cloud Controller会设置一个默认的磁盘大小,不设置就会生效,并且会设置一个最大的磁盘大小,这样可以限制你在基础上消耗过多的磁盘而影响其他用户。

我认为除了指定大磁盘配额(尝试cf push -k 99999G)并查看响应之外,没有其他方法可以获取云控制器和您的平台运营商允许的最大磁盘空间。

从您的回复中可以看出,云控制器会在错误消息中告诉您允许的最大值。在您的情况下,它最多允许 2G。

应用无效:disk_quota 请求的磁盘过多(请求的 4096 MB - 必须小于 2048 MB)

除了写信给您的平台运营商并要求他们增加这个值之外,您无法获得超过 2G 的磁盘。如果这是您公司的平台,那么这可能是最好的选择。

如果您使用的是公共提供商,那么您可能会更好地查看其他提供商。您可以使用几个公共的、经过认证的提供商。在此处查看列表 -> https://www.cloudfoundry.org/thefoundry/

希望有帮助!

【讨论】:

  • 感谢@DanielMikusa - 我没有提供足够的背景信息。我在帖子中添加了更多细节。当我使用 AWS 快速入门将其部署到 AWS 时,我可以完全控制部署。希望这有助于提供更多背景信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多