在 Azure 中部署容器集群

ps0*_*604 5 azure docker docker-compose dask dask-distributed

我有一个 Docker 应用程序,它在 Windows 上的笔记本电脑中运行良好,使用组合和启动容器的多个实例作为 Dask 集群。

服务的名称是“worker”,我启动了两个容器实例,如下所示:

docker compose up --scale worker=2
Run Code Online (Sandbox Code Playgroud)

我在 Azure 上部署了映像,当我运行 docker compose(使用我在 Windows 中使用的相同命令)时,只启动了一个容器。

如何在 Azure 中部署容器集群?我可以使用 docker compose 还是我需要采用不同的方法,例如使用模板或 Kubernetes 进行部署?

这是docker-compose.yml文件:

version: "3.0"
services:

  web:
    image: sofacr.azurecr.io/pablo:job2_v1
    volumes:
      - daskvol:/code/defaults_prediction      
    ports:
      - "5000:5000"
    environment:
      - SCHEDULER_ADDRESS=scheduler
      - SCHEDULER_PORT=8786
    working_dir: /code
    entrypoint:
      - /opt/conda/bin/waitress-serve
    command:
      - --port=5000
      - defaults_prediction:app

  scheduler:
    image: sofacr.azurecr.io/pablo:job2_v1
    ports:
      - "8787:8787"
    entrypoint:
      - /opt/conda/bin/dask-scheduler

  worker:
    image: sofacr.azurecr.io/pablo:job2_v1
    depends_on:
      - scheduler
    environment:
      - PYTHONPATH=/code
      - SCHEDULER_ADDRESS=scheduler
      - SCHEDULER_PORT=8786
    volumes:
      - daskvol:/code/defaults_prediction
      - daskdatavol:/data
      - daskmodelvol:/model
    entrypoint:
      - /opt/conda/bin/dask-worker
    command:
      - scheduler:8786
      
volumes:
  daskvol:
    driver: azure_file
    driver_opts:
     share_name: daskvol-0003
     storage_account_name: sofstoraccount
  daskdatavol:
    driver: azure_file
    driver_opts:
     share_name: daskdatavol-0003
     storage_account_name: sofstoraccount
  daskmodelvol:
    driver: azure_file
    driver_opts:
     share_name: daskmodelvol-0003
     storage_account_name: sofstoraccount
Run Code Online (Sandbox Code Playgroud)

Saj*_*ran 3

这里您需要的是 Azure Kubernetes 服务或 Azure Webapps for Containers。两者都将负责从 ACR 获取 Docker 镜像,然后分发到一组机器上。

这是选择计算服务的决策树

容器实例 - 小型、快速、无服务器容器托管服务 - 通常适合小型容器部署,我倾向于使用它来生成临时后台作业

AKS——大规模容器部署,这里很大一部分是多容器编排平台。看看这个例子