(已弃用)部署 DC/OS 群集

警告

Azure 容器服务 (ACS) 正在被弃用。 将不会向 ACS 添加任何新特性或新功能。 所有 API、门户体验、CLI 命令和文档均已标记为“已弃用”。

有关详细信息,请参阅 Azure.com 上的 Azure 容器服务弃用声明

我们建议你部署以下 Azure 市场解决方案之一:

如果想要使用 Kubernetes,请参阅 Azure Kubernetes 服务

DC/OS 提供了一个用于运行现代和容器化应用程序的分布式平台。 通过 Azure 容器服务,使预配生产就绪的 DC/OS 群集变得简单快捷。 本快速入门详细介绍了部署 DC/OS 群集并运行基本工作负荷所需的基本步骤。

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

本教程需要 Azure CLI 2.0.4 或更高版本。 运行 az --version 即可查找版本。 如果需要进行升级,请参阅安装 Azure CLI

登录 Azure

使用 az login 命令登录到 Azure 订阅,并按照屏幕上的说明进行操作。

az login

创建资源组

使用“az group create”命令创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

以下示例在“eastus”位置创建名为“myResourceGroup”的资源组。

az group create --name myResourceGroup --location eastus

创建 DC/OS 群集

使用 az acs create 命令创建 DC/OS 群集。

下面的示例创建一个名为 myDCOSCluster 的 DC/OS 群集,并且在不存在 SSH 密钥时创建这些密钥。 若要使用特定的一组密钥,请使用 --ssh-key-value 选项。

az acs create --orchestrator-type dcos --resource-group myResourceGroup --name myDCOSCluster --generate-ssh-keys

在某些情况下(如限时试用),Azure 订阅对 Azure 资源的访问受限。 如果由于可用核心有限而导致部署失败,请将 --agent-count 1 添加到 az acs creat 命令中,以减少默认代理计数。

几分钟后,该命令完成并返回有关部署的信息。

连接到 DC/OS 群集

创建 DC/OS 群集后,可以通过 SSH 隧道进行访问。 运行以下命令,以返回主 DC/OS 的公共 IP 地址。 该 IP 地址存储在一个变量中,并将在下一步使用。

ip=$(az network public-ip list --resource-group myResourceGroup --query "[?contains(name,'dcos-master')].[ipAddress]" -o tsv)

要创建 SSH 隧道,请运行以下命令并按照屏幕上的说明进行操作。 如果正在使用端口 80,则该命令将失败。 将隧道端口更新为未在用的端口,例如 85:localhost:80

sudo ssh -i ~/.ssh/id_rsa -fNL 80:localhost:80 -p 2200 azureuser@$ip

可以通过浏览到 https://localhost 来测试 SSH 隧道。 如果 80 以外的端口已被使用,请调整位置以进行匹配。

如果已成功创建 SSH 隧道,则返回 DC/OS 门户。

DCOS UI

安装 DC/OS CLI

DC/OS 命令行接口用于从命令行管理 DC/OS 群集。 使用 az acs dcos install-cli 命令安装 DC/OS cli。 如果使用的是 Azure CloudShell,则 DC/OS CLI 已安装。

如果在 macOS 或 Linux 上运行 Azure CLI,则可能需要将该命令与 sudo 一起运行。

az acs dcos install-cli

在 CLI 可用于群集之前,必须将它配置为使用 SSH 隧道。 为此,请运行以下命令,并根据需要调整端口。

dcos config set core.dcos_url https://localhost

运行应用程序

ACS DC/OS 群集的默认计划机制为 Marathon。 Marathon 用于启动应用程序和管理 DC/OS 群集上的应用程序状态。 若要通过 Marathon 计划应用程序,则请创建一个名为 marathon app.json 的文件,并将以下内容复制到其中。

{
  "id": "demo-app",
  "cmd": null,
  "cpus": 1,
  "mem": 32,
  "disk": 0,
  "instances": 1,
  "container": {
    "docker": {
      "image": "nginx",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp",
          "name": "80",
          "labels": null
        }
      ]
    },
    "type": "DOCKER"
  },
  "acceptedResourceRoles": [
    "slave_public"
  ]
}

运行以下命令以计划要在 DC/OS 群集上运行的应用程序。

dcos marathon app add marathon-app.json

若要查看应用的部署状态,请运行以下命令。

dcos marathon app list

当“WAITING”列值从“True”切换到“False”时,应用程序部署已完成。

ID     MEM  CPUS  TASKS  HEALTH  DEPLOYMENT  WAITING  CONTAINER  CMD   
/test   32   1     1/1    ---       ---      False      DOCKER   None

获取 DC/OS 群集代理的公共 IP 地址。

az network public-ip list --resource-group myResourceGroup --query "[?contains(name,'dcos-agent')].[ipAddress]" -o tsv

浏览到此地址将返回默认 NGINX 站点。

NGINX

删除 DC/OS 群集

如果不再需要资源组、DC/OS 群集和所有相关的资源,则可以使用 az group delete 命令将其删除。

az group delete --name myResourceGroup --no-wait

后续步骤

在本快速入门中,你已部署 DC/OS 群集,并在群集上运行简单的 Docker 容器。 若要详细了解 Azure 容器服务,请继续学习 ACS 教程。