用Azure容器服务部署Docker Swarm

Docker Swarm是当前集群和转化池最受欢迎工具之一,关于Docker主机变成单个主机。通过Azure Container Service (ACS) 创建Docker Swarm很简单,并且为了促使系统优化和可移植,它是一个省时、高效的选择。

Azure是当今发展最快的基础设施服务之一。它支持对需求的可扩展,不但拥有来自全球超过19个地区的客户支持,而且拥有创建混合环境的能力、大数据洞察等等。

Azure容器服务对集群支持2种不同的协调器。注意,用户必须有一个Azure账户才能开始。

  • Docker Swarm使用主体Docker堆栈,所以你需要直接使用Docker命令部署容器。使用SSH链接Master后部署容器,接下来执行一个Docker命令。本文之后会详细描述进程。
  • 数据中心操作系统DC/OS在不同格式下运行容器,包括Docker images。

在本文中,我们将带你一步步在Azure上使用ACS创建一个Docker Swarm集群。

一步步创建一个Docker Swarm集群

准备RSA 秘钥

首先,我们需要一个RSA秘钥,将会在接下来的部署环节中需要。

打开你的终端(如果你使用基于UNIX的操作系统)。如果你用Windows,可以在Windows上建立一个UNIX终端,例如GitHub for Windows 或 Cygwin。

现在,我们开始执行命令生成秘钥。进入终端后的第一个命令是:$ ssh-keygen

点击ENTER后,你将被要求一个保存秘钥的位置。

 

SSH RSA Key Generation

SSH RSA Key Generation

如果你是一个Windows用户并且希望指向用户文件夹内的某个位置。你必须键入位置(我们放置的部分 ~/azure_keys/id_rsa)。这应该与/c/Users//azure_keys/类似。

如果你是Linux或Mac用户,你可以键入~/azure_keys(~ character指向用户的位置)。在一些Windows上的Linux虚拟终端,像是Cygwin,~ character起到同样的作用。

再次点击Enter后,将被要求为秘钥设置一个密码。如果你不需要密码,只需要点击Enter;否则为这个秘钥设置密码。随后你会得要一个关于成功保存私人/公共秘钥对的通知,可以在指定的位置看到。

Docker Swarm集群部署

进入Azure账号入口,并且点击“+”键,搜索“容器”。

Azure’s User Portal

Azure’s User Portal

点击Azure Container Service。在下一个视图,Azure Container Service会展现在第一项。点击“创建”按钮,会出现创建Docker Swarm视图。

 

Azure容器服务在搜索列表

Azure容器服务在搜索列表

点击创建后,我们可以开始填写基础配置设置。第一个字段是在Docker Swarm集群中虚拟机的管理员用户名。信息是用户特定信息。

Docker Swarm Basics Configuration

Docker Swarm Basics Configuration

第二个字段是SSH公共秘钥,第一步创建。选择生成文件的扩展名。在编辑标题中打开,在SSH公共秘钥标签下区域粘贴。

然后,选择订阅,用你制定的名称为Docker Swarm创建一个新的资源组。最后一个字段是基础配置,选择数据中心位置。在我们的项目中我们选择了West US,但是在下拉菜单有15个以上Azure区域选择。

Framework Configuration

Framework Configuration

下一步,提供Docker Swarm配置协调器。

Service Settings

Service Settings

进入服务设置,需要提供代理数量(在我们的案例中,我们用2)。这数字最高可以是100.masters数量,我们用1,我们会用有意义的术语dockerswarm-,用作master和代理DNS前缀。

点击OK后,你可以看到总结视图:

Summary Page

Summary Page

接下来,点击OK会转到最后一步,购买。可以多次点击“购买”键跳过确认。点击“购买”后,主页会重新载入(仪表盘)你可以看到你的Docker Swarm集群正在等待配置。

Dashboard and Waiting for Docker Swarm Deployment

Dashboard and Waiting for Docker Swarm Deployment

配置Docker Swarm需要一些时间,在可以在仪表盘上看到Docker Swarm资源。随意点击你可以看到配置Docker Swarm集群的详细信息。

Deployed Docker Swarm: Dashboard View

Deployed Docker Swarm: Dashboard View

连接Master

一旦你已经创建并配置Docker Swarm,需要连接Master确保所有都在它该在的地方。点击Docker Swarm资源在仪表盘上显示。在“设置”下,左侧菜单选择配置项。

Docker Swarm Cluster — Deployment Details

Docker Swarm Cluster — Deployment Details

在配置入口,选择最后一个,实际上在列表上是第一个入口。在右侧,可以发现配置信息。在这可以找到master的DNS当连接命令通过SSH到master。我们可以从字段复制命令-打成SSHMASTER0-在终端使用。

连接master的SSH命令:

ssh  -A -p 2200 -i

上面的命令是当你点击在文本框边上的复制图标上创建的,部分参数 -i 被添加。这个被添加是因为有时候用户有几对私人/公共秘钥。他们通常不保存在基于UNIX操作系统的默认的SSH文件夹中,所以我们希望避免任何冲突并且用默认系统配置生成没有干扰的一对秘钥。

Network Interface of Master

Network Interface of Master

一旦成功连接master,我们希望得到集群的信息。在做那之前,我们需要master的IP地址。我么需要点击Docker Swarm集群里资源盒中的更。当我们点击Swarm 主虚拟机,随后在Swarm master 明细视图中左侧菜单选择网络接口,注意到IP地址在结果表格中。所以返回终端并复制命令:

docker -H 172.16.0.5:2375 info

集群信息输出像这样:

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
 Images: 0
 Role: primary
 Strategy: spread
 Filters: health, port, dependency, affinity, constraint
 Nodes: 2
 swarm-agent-XXXXXXXX: 10.0.0.4:2375
 Status: Healthy
 ……..
 swarm-agent-YYYYYYYY: 10.0.0.5:2375
 Status: Healthy
 …..

使用Azure CLI

在移动命令到创建一个集群之前,需要先从 Azure CLI登陆到Azure,可以通过集中方法实现(在这篇文章中可以得到解释)。Docker同学需要在机器上安装;安装说明可以在官方Docker site上找到。
现在将描述如何通过 Azure CLI工具来创建一个Docker Swarm集群。在通过Azure CLI连接你的账户后,可以确认它生效了。在终端键入下面的命令:

azure account show

在输出中,你会得到:

info: Executing command account show
 data: Name : 
 data: ID : 
 data: State : Enabled
 data: Tentat ID : 
 data: Is Default : true
 data: Environment : AzureCloud
 data: Has Certificate : No
 data: Has Access Token : Yes
 data: User name :

现在我们将继续进行创建Docker Swarm集群。接下来一连串命令会创建一个master,用作维护集群和2个容器节点。

创建Master和节点的Azure CLI命令:

azure vm docker create  -l  -e 22 b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140618.1-en-us-30GB ops  azure vm docker create  -l  -e 22 b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140618.1-en-us-30GB ops  azure vm docker create  -l  -e 22 b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140618.1-en-us-30GB ops

输出会像这样:

info: Executing command vm docker create
 warn: --vm-size has not been specified. Defaulting to "Small".
 info: Found docker client certificates.
 + Looking up image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04-LTS-amd64-server-20140618.1-en-us-30GB
 + Looking up cloud service
 info: cloud service  not found.
 + Creating cloud service
 + Retrieving storage accounts
 + Creating a new storage account 'portalvhds1477345946449'
 + Creating VM

确认VMs被创建并且准备使用,可以输入命令azure vm list,将会返回:

The List of Created VMs

The List of Created VMs

我们将使用这些VMs并且创建Docker Swarm集群。第一件事是连接主机。然后执行swarm image为了生成一个标记,在之后发现成员并且创建swarm集群中使用。

在master上需要被执行的命令:

docker --tls -H tcp://:2376 run --rm swarm create

Master的DNS名称在上面的表格上,当我们列出所有VMs时被创建。Swarm输出如下所示。

Swarm Create Output Example

Swarm Create Output Example

Which will generate output similar to the one below.

标记作为一个执行先前命令的结果生成需要被保存,虽然它只被短暂的使用。

现在将开始在集群中加入节点VMs。在那之前,需要从节点检索Docker端口,为了使用它加入集群。为此,我们使用

Azure CLI和下面的命令:

azure vm endpoint list

它将生成输出类似于下面:

Node Endpoint Example

Node Endpoint Example

现在使用docker和-H参数,我们将加入第一个节点到集群中。

docker --tls -H tcp://:2376 run -d swarm join --addr=:2376 token://

在集群容器信息中加入节点的命令包括DNS名称和节点的IP,可以在VMs列表中发现。另外,当创建swarm主机时使用我们得到的标记。

重复这些步骤得到第二个节点。

然后在集群中加入节点:

docker --tls -H tcp://:2376 run -d swarm join --addr=:2376 token://

在集群中加入节点的这两个命令生成一个类似的输出。

Swarm Join Output Example

Swarm Join Output Example

确认两个节点加入命令执行swarm良好,键入命令:

docker --tls -H tcp://:2376 ps -a

两个节点将生成输出:

20161128194451

所有步骤完成后,将执行 swarm manage command。这是创建Swram管理员,其目的是接受命令和分配容器到Swarm节点。

docker --tls -H tcp://:2376 run -d -p 2375:2375 swarm manage token://

为了列出节点使用master节点,可以键入以下命令:

docker --tls -H tcp://:2376 run --rm swarm list token://

当输出这条命令,就可以看到创建节点的IP。

总结

在本文中,我们详细的描述了如何使用Azure容器服务创建一个Docker Swarm集群。Azure容器服务是为了集群像容器一样的解决方案并策划通过一个灵活和人性化的入口。这个方法对于那些正在寻找一个快速的集群开发解决方案的人来说是最好的,通过少量的点击和进入一些基础信息,用户可以易控的创建集群。

第二,低水平的方法就是用Azure CLI壳。通过这个方法,创建/管理集群自动化可以实现,并且这方法对那些喜欢从事脚本和自动化进程的人来说非常有用。

最后,可以说创建一个Docker Swarm集群通过2种方法都可以相当快的完成,问题出现在创建的路径通常比较小。有好的支持和文档,这是一个在Azure云上部署Docker Swarm简单的、人性化解决方案。

K8S中文社区微信公众号
分享到:更多 ()