Universal Container Runtime (UCR)

使用 Universal Container Runtime 启动 Mesos 容器

使用 UCR 配置 Mesos 容器

通用容器运行时 (UCR) 从二进制可执行文件启动 Mesos 容器,并扩展 Mesos 容器运行时间以支持配置 Docker 镜像。UCR 与 Docker Engine 相比,在运行 Docker 镜像方面具有许多优势。如需要 Docker Engine 的功能,请使用 Docker Engine。

Docker 注册表支持

UCR 使用 Docker v2 注册表 API 获取 Docker 镜像/层。支持两个 Docker 清单 v2 schema1v2 schema2(从 DC/OS 1.13.0 开始支持 v2 schema2)。

DC/OS UI

使用此程序从 DC/OS UI 配置 UCR 的容器。

  1. 单击 DC/OS GUI 服务 选项卡,然后单击 运行服务
  2. 单击 Single Container
  3. 输入服务 ID。
  4. CONTAINER IMAGE 字段中,可以选择输入容器镜像。否则,在 COMMAND 字段中输入命令。
  5. 指定 UCR。单击 MORE SETTINGS。在 Container Runtime 部分,选择 UNIVERSAL CONTAINER RUNTIME (UCR) 单选按钮。
  6. 单击查看和运行运行服务

DC/OS CLI

使用此程序从 DC/OS 命令行配置 UCR 的容器。

  1. Marathon 应用定义中,将 container.type 参数设置为 MESOS。在这里,我们使用 docker 对象指定 Docker 容器。UCR 提供可选的 pullConfig 参数以使您能够对专用 Docker 注册表进行身份认证
  1. {
  2. "id": "/nginx-bridge",
  3. "container": {
  4. "portMappings": [
  5. {
  6. "containerPort": 80,
  7. "hostPort": 0,
  8. "labels": {
  9. "VIP_0": "/nginx2:1024"
  10. },
  11. "protocol": "tcp",
  12. "servicePort": 10000,
  13. "name": "webport"
  14. }
  15. ],
  16. "type": "MESOS",
  17. "volumes": [],
  18. "docker": {
  19. "image": "nginx",
  20. "forcePullImage": false,
  21. "pullConfig": {
  22. "secret": "pullConfigSecret"
  23. },
  24. "parameters": []
  25. }
  26. },
  27. "secrets": {
  28. "pullConfigSecret": {
  29. "source": "/mesos-docker/pullConfig"
  30. }
  31. },
  32. "args":[
  33. "<my-arg>"
  34. ],
  35. "cpus": 0.5,
  36. "disk": 0,
  37. "instances": 1,
  38. "mem": 128,
  39. "networks": [
  40. {
  41. "mode": "container/bridge"
  42. }
  43. ],
  44. "requirePorts": false
  45. }

重要信息:如果您将“args”字段留空,默认入口点将为容器的启动命令。如果您的容器没有默认入口点,则须在“args”字段中指定命令。如果不这样做,您的服务将无法部署。

容器镜像垃圾收集

对于长时间运行的群集,容器镜像可能占用代理机器上的磁盘空间。为了改善操作者使用 UCR 的体验,从 Mesos 1.5.0 开始引入了容器镜像垃圾收集 (GC)(请阅读 Mesos 文档 了解更多详情)。默认情况下,镜像 GC 在 DC/OS 中是自动的,而操作员可以手动触发。

自动镜像 GC

容器镜像自动 GC 默认启用,由镜像 GC 配置文件配置。可通过 /opt/mesosphere/etc/mesos-slave-common 处的 MESOS_IMAGE_GC_CONFIG 环境变量更新此配置文件。默认配置文件位于 /opt/mesosphere/etc/mesos-slave-image-gc-config.json,以下是配置文件的参数:

  • image_disk_headroom:用于计算容器镜像存储大小阈值的镜像磁盘空间。如果镜像磁盘使用率达到该阈值,将自动触发镜像垃圾收集。请注意,净空值必须介于 0.0 和 1.0 之间。(默认值为 0.1,表示 90% 的磁盘使用率为阈值)
  • image_disk_watch_interval:检查镜像存储磁盘使用率的周期时间间隔。请注意,此时间间隔的单位为“纳秒”。(默认值为 300000000000,表示每 5 分钟检查一次磁盘)
  • excluded_images:不应进行垃圾收集的已排除镜像列表。(默认为空列表)

手动镜像 GC

容器镜像手动 GC 可通过 HTTP Operator API 触发。有关详细信息,请参阅 v1 算子 API doc中的 PRUNE_IMAGES 部分 。

延伸阅读