(已弃用)Azure 容器服务教程 - 管理 DC/OS

警告

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

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

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

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

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

  • 创建 ACS DC/OS 群集
  • 连接到群集
  • 安装 DC/OS CLI
  • 将应用程序部署到群集
  • 缩放群集上的应用程序
  • 缩放 DC/OS 群集节点
  • 基本 DC/OS 管理
  • 删除 DC/OS 群集

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

创建 DC/OS 群集

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

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

az group create --name myResourceGroup --location westeurope

接下来,使用 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

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

连接到 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

安装 DC/OS CLI

使用 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-private",
  "cmd": null,
  "cpus": 1,
  "mem": 32,
  "disk": 0,
  "instances": 1,
  "container": {
    "docker": {
      "image": "nginx",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp",
          "name": "80",
          "labels": null
        }
      ]
    },
    "type": "DOCKER"
  }
}

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

dcos marathon app add marathon-app.json

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

dcos marathon app list

当“TASKS”列值从“0/1”切换到“1/1”时,应用部署已完成。

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

缩放 Marathon 应用程序

在上一个示例中,已创建单个实例应用程序。 要更新此部署,以使应用程序的三个实例可用,请打开“marathon-app.json”文件,并将实例属性更新为 3。

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

使用 dcos marathon app update 命令更新应用程序。

dcos marathon app update demo-app-private < marathon-app.json

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

dcos marathon app list

当“TASKS”列值从“1/3”切换到“3/1”时,应用程序部署已完成。

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

运行的 Internet 可访问的应用

ACS DC/OS 群集包括两个节点集,一个是可通过 Internet 访问的公共节点集,一个是无法通过 Internet 访问的专用节点集。 默认集是专用节点集,将在最后一个示例中使用。

若要通过 Internet 访问应用程序,则需要将其部署到公共节点集。 若要执行此操作,请为 acceptedResourceRoles 对象赋值 slave_public

创建名为 nginx-public.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 nginx-public.json

获取 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 acs scale 命令完成。

若要查看 DC/OS 代理的当前计数,请使用 az acs show 命令。

az acs show --resource-group myResourceGroup --name myDCOSCluster --query "agentPoolProfiles[0].count"

若要将计数增加到 5,请使用 az acs scale 命令。

az acs scale --resource-group myResourceGroup --name myDCOSCluster --new-agent-count 5

删除 DC/OS 群集

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

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

后续步骤

在本教程中,你了解了包括以下内容在内的基本 DC/OS 管理任务。

  • 创建 ACS DC/OS 群集
  • 连接到群集
  • 安装 DC/OS CLI
  • 将应用程序部署到群集
  • 缩放群集上的应用程序
  • 缩放 DC/OS 群集节点
  • 删除 DC/OS 群集

继续学习下一个教程,了解 Azure 的 DC/OS 中的负载均衡应用程序。