Rancher七--基础架构
  it2nV7RK7uw1 2023年11月28日 38 0

1.Swarm

在Rancher中部署Swarm,您首先需要添加一个新的环境。这个环境需要使用编排引擎为Swarm环境模版进行创建。

需求

  • Docker 1.13 以上
  • 端口 2377 以及 2378 需要能在主机之间相互访问。

创建一个 Swarm 环境

在左上角的环境的下拉菜单中,点击环境管理。通过点击添加环境去创建一个新的环境,需要填写名称描述(可选),并选择Swarm作为编排引擎的环境模版。如果启用了访问控制,您可以在环境中编辑成员并选择他们的成员角色。所有被添加到成员列表的用户都能访问您的环境。

在创建Swarm环境后,您可以在左上角环境的下拉菜单中切换到您的环境,或者在环境管理页面中,在对应环境的下拉选项中点击切换到此环境

注意: Rancher支持多种容器编排引擎框架,但Rancher目前不支持在已有运行服务的环境里切换容器编排引擎。

启动 Swarm

在Swarm环境被创建后,在您添加一台主机到这个环境之前,基础设施服务是不会启动的。Swarm服务需要至少3个主机节点。添加主机的过程与其他编排引擎相同。一旦第一个主机被添加成功,Rancher将会自动启动基础设施服务,包括Swarm的组件(例如swarm与swarm-agent)。您可以在Swarm页面看到部署的过程。

注意: 请不要手动对docker daemon使用docker swarm命令。这可能与Rancher管理Swarm集群产生冲突。

注意: 只有Rancher的管理员或者环境的所有者才能够看到基础设施服务

在命令行中使用CLI

在Rancher的UI里,您可以方便的连接到能够运行docker或者docker-compose命令的容器中。通过这个命令行您可以控制Swarm集群。

2.Mesos

在Rancher中部署Mesos,您首先需要添加一个新的环境,这个环境需要环境模版中设定容器编排引擎是 Mesos

创建一个Mesos环境

在左上角的环境的下拉菜单中,点击环境管理。通过点击添加环境去创建一个新的环境,需要填写名称描述(可选),并选择Mesos作为编排引擎的环境模版。如果启用了访问控制,您可以在环境中编辑成员并选择他们的成员角色。所有被添加到成员列表的用户都能访问您的环境。

在创建Mesos环境后,您可以在左上角环境的下拉菜单中切换到您的环境,或者在环境管理页面中,在对应环境的下拉选项中点击 切换到此环境 。

注意: Rancher支持多种容器编排引擎框架,但Rancher目前不支持在已有运行服务的环境里切换容器编排引擎。

启动 Mesos

在Mesos环境被创建后,在您添加一台主机到这个环境之前,基础设施服务是不会启动的。Mesos服务需要至少3个主机节点。添加主机的过程与其他编排引擎相同。一旦第一个主机被添加成功,Rancher将会自动启动基础设施服务,包括Mesos的组件(例如mesos-master,mesos-agent以及zookeeper)。您可以在 Mesos页面看到部署的过程。

注意: 只有Rancher的管理员或者环境的所有者才能够看到基础设施服务

使用 Mesos

当安装成功后,您可以通过以下的方式开始创建或者管理您的Mesos应用:

Mesos UI

您可以通过点击Mesos UI去管理Mesos。它会打开一个新的页面,您可以在这个不同的UI中管理Mesos。任何在该UI上创建的framework同样会在Rancher反映出来。

Ranche应用商店

Rancher支持Mesos框架下的应用商店。通过点击 Mesos -> 启动一个framework按钮或者直接点击 应用商店 标签去选择使用一个framework。选择您想启动的framework并且点击查看详情。查看并且编辑Stack名称,Stack描述以及配置选项,最后点击 启动

如果您想添加您自己的Mesos应用模版,您可以把他们添加到您的私有Rancher 应用商店并把您的模版放入mesos-templates的目录。

3.Windows (实验性)

在Rancher中部署Windows,您首先需要添加一个新的环境。这个环境需要使用编排引擎为Windows环境模版进行创建。

目前Rancher只支持在特定主机上创建容器。大多数在Cattle和Rancher UI上有的特性目前都不支持Windows(如 服务发现, 健康检查, 元数据, DNS, 负载均衡)。

注意: Rancher中有一个默认的Windows环境模版。如果您想创建您自己的Windows环境模版,您需要禁用所有其它的基础设施服务,因为这些服务目前都不兼容Windows。

创建一个 Windows 环境

在左上角的环境的下拉菜单中,点击环境管理。通过点击添加环境去创建一个新的环境,需要填写名称描述(可选),并选择Windows作为编排引擎的环境模版。如果启用了访问控制,您可以在环境中编辑成员并选择他们的成员角色。所有被添加到成员列表的用户都能访问您的环境。

在创建Windows环境后,您可以在左上角环境的下拉菜单中切换到您的环境,或者在环境管理页面中,在对应环境的下拉选项中点击切换到此环境

注意: Rancher支持多种容器编排引擎框架,但Rancher目前不支持在已有运行服务的环境里切换容器编排引擎。

添加 Windows 主机

在Rancher中添加一个Windows主机,您需要先有一个运行了Docker的Windows Server 2016主机。

基础架构->主机->添加主机页面,您可以按照指示用自动生产的自定义命令启动Rancher Agent。

在主机上,Rancher的二进制客户端会被下载到C:/Program Files/rancher目录,您可以在C:/ProgramData/rancher/agent.log找到客户端日志。

移除 Windows 主机

作为一个Rancher中的主机,Rancher客户端已经被安装并且注册在了主机上。您必须在Windows主机上删除已经存在的Rancher客户端服务,您可以在 powershell 中运行如下命令来删除客户端。删除客户端后您可以在 Windows 环境中重用这个主机

& 'C:\Program Files\rancher\agent.exe' -unregister-service

Windows 中的网络

我们默认支持NAT和透明网络.

目前,默认的 Windows 环境模版支持名为transparent的透明网络这个透明网络是在运行 docker network create -d transparent transparent时创建的。

如果您要创建一个名字不是 transparent 的透明网络,您需要创建一个新的环境模版,并把 Windows 设为容器编排平台。选择Windows后,您可以点击 编辑配置 来更改透明网络的名字。您可以用这个环境模版创建一个环境。但在 Rancher UI 中这个透明网络的默认名字依然是 transparent。 因此,您需要把命令更新为 docker network create -d transparent <NEW_NAME_IN_TEMPLATE.

4.主机

在Rancher中,主机是调度资源的基本单位(直观的理解就是所发生的操作最终都会落到某台主机上),它可以是虚拟的或者物理的Linux服务器。Rancher管理的主机需要满足以下的条件:

  • 任何可以运行支持的Docker版本的 Linux 发行版本,例如:RancherOS,Ubuntu,RHEL/CentOS 7。不过针对RHEL/CentOS系列,有些需要注意的地方:
  • Docker 并不推荐使用 RHEL/CentOS 默认的存储驱动(devicemapper),可以参考这篇文档来修改。
  • 如果启用 SELinux,需要安装额外的模块
  • 内核版本要求是 3.10.0-514.2.2.el7.x86_64 及以上,建议使用 RHEL/CentOS 7.3 或者更高的发行版本。
  • 1GB的内存。
  • 推荐 w/AES-NI 架构的 CPU。
  • 主机可以通过HTTP或HTTPS来访问Rancher Server服务,默认端口是8080。
  • 主机与主机之间是可以相互访问的,从而确保容器之间的跨主机通信。另外,Rancher也可以管理由Docker Machine驱动的主机,只要这些主机满足上面的条件即可。

在Rancher的操作界面上,选择 基础架构->主机,点击 添加主机按钮,然后再做些工作,就可以让 Rancher 管理到这台新主机了。

Docker版本适用对比

版本

Rancher适用?

K8S适用?

安装脚本

1.9.x 和更低的版本

No

1.10.0 - 1.10.2

No

1.10.3 (和更高的版本)

No{::nomarkdown}(Yes v1.6.5以及更低版本中){:/}

No

curl [https://releases.rancher.com/install-docker/1.10.sh](https://releases.rancher.com/install-docker/1.10.sh)</td></tr><tr><td><code>1.11.x</code></td><td>No</td><td></td><td>curl https://releases.rancher.com/install-docker/1.11.sh

1.12.0 - 1.12.2

No

1.12.3 (和更高的版本)

Yes

Yes

curl [https://releases.rancher.com/install-docker/1.12.sh](https://releases.rancher.com/install-docker/1.12.sh)</td></tr><tr><td><code>1.13.x</code></td><td>**Yes**</td><td>No</td><td>curl https://releases.rancher.com/install-docker/1.13.sh

17.03.x-ce

Yes

No

curl [https://releases.rancher.com/install-docker/17.03.sh](https://releases.rancher.com/install-docker/17.03.sh)</td></tr><tr><td><code>17.03.x-ee</code></td><td>**Yes**</td><td>No</td><td>n/a</td></tr><tr><td><code>17.04.x-ce</code></td><td>No</td><td></td><td>curl https://releases.rancher.com/install-docker/17.04.sh

17.05.x-ce

No

No

curl [https://releases.rancher.com/install-docker/17.05.sh](https://releases.rancher.com/install-docker/17.05.sh)</td></tr><tr><td><code>17.06.x-ce</code></td><td>**Yes**{::nomarkdown} (v1.6.3以及更高版本) {:/}</td><td>No</td><td>curl https://releases.rancher.com/install-docker/17.06.sh

17.06.x-ee

Yes{::nomarkdown}(v1.6.3以及更高版本){:/}

No

n/a

注意: 我们不会支持Docker的edge版本,但是我们会支持Docker的稳定版本。

安装特定版本的Docker

一般会使用 curl https://get.docker.com | sh 脚本来安装最新版的 Docker 。但是,最新版的 Docker 有可能不适用于正准备安装或已经在使用中的 Rancher 版本。因此,一种推荐的做法是:安装特定版本的 Docker。按照上方的对比表,选择 Rancher 适用的安装脚本执行即可。

注意: 如果从操作界面上添加云主机,可以通过 高级选项 里面的 Docker Install URL来选择需要安装的 Docker 版本。

主机是如何工作的?

Rancher Agent容器在主机上启动成功之后,这台主机就连接到了Rancher Server上。在添加主机->Custom(自定义)界面中的很长的URL就是主机注册口令。这个注册口令在主机第一次连接Rancher Server的时候会被用到。在注册的过程中,Rancher Server会生成一个Agent账号和一个API密钥。之后Agent与Server直接的全部通信都要使用这个密钥,它们之间的认证逻辑和其他的API密钥认证逻辑是一样的。

从设计的角度而言,Rancher Agent是运行在独立于Rancher Server的主机上,所以Rancher Agent本身是不可信的。采用接口访问密钥的机制,可以确保Rancher Agent只访问被授权的接口,而Rancher Server只响应可信的请求。但是目前是单向认证,只认证从Rancher Agent到Rancher Server的请求,并没有认证从Rancher Server到Rancher Agent的响应。因此,用户可以根据需要,使用TLS和证书来做校验。

每个环境的注册口令,都是由Rancher Server生成并保存到数据库,然后和API密钥一起下发给Rancher Agent使用。Rancher Agent和Rancher Server之间是采用AES对称加密的点对点通讯。


添加主机

第一次添加主机时,Rancher Server会要求配置主机注册地址。这个地址可以是域名或者IP地址(如果80端口不可访问,还需要加上可访问的端口号,默认 8080),能够访问Rancher接口即可。任何时候都可以改变 主机注册地址,相关操作可以查看 系统管理 下的 系统设置。设置好主机注册地址后,点击 保存.

Rancher支持添加云提供商(例如AWS,DigitalOcean,阿里云,vSphere等)所提供的主机或者本地(例如VirtualBox,VMWare等)设置好的主机。对于云提供商,Rancher可以通过docker-machine来添加的,所以本质上实现了 Docker Machine 驱动的厂商的云主机,都可以被添加。

接下来,选择:


主机标签

在Rancher中,可以通过添加标签的方式来管理某台主机,做法就是在 rancher/agnet 容器启动的时候,以环境变量的方法把标签加进去。在操作界面上可以看到,标签其实是一些键不可以重复的键值对。值得注意的是,如果有两个相同的键但是值不一样,那么最后添加的值将会被Rancher使用。

给主机增加标签后,您可以根据需求来调度服务/负载均衡。如果不希望某个服务运行在某台主机上或者要求某个服务必须运行在某台主机上,可以在添加服务时通过主机标签来进行配置。

在您需要使用外部DNS服务(类似 Bind9 这类)或者通过程序来控制DNS记录的时候,如果所需的IP不是主机IP的话,那就要在运行 rancher/agent 时增加标签 io.rancher.host.external_dns_ip=<IP_TO_BE_USED_FOR_EXTERNAL_DNS>。切记,当要某个容器服务要使用外部DNS服务时,一定要增加这个标签。

通过UI添加云提供商的主机时,您可以在UI上添加主机标签,rancher/agent 会保证这些标签都会自动添加到主机上。

如果通过UI添加自定义主机,当增加标签时,UI上的运行注册脚本会增加对应的环境变量:CATTLE_HOST_LABELS。比如,增加一个标签:foo=bar,会出现下面的效果:

$  sudo docker run -e CATTLE_HOST_LABELS='foo=bar' -d --privileged \
     -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.8.2 \
     http://<rancher-server-ip>:8080/v1/projects/1a5/scripts/<registrationToken>
  
 # 当再增加一个标签:hello=world
 $  sudo docker run -e CATTLE_HOST_LABELS='foo=bar&hello=world' -d --privileged \
     -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.8.2 \
     http://<rancher-server-ip>:8080/v1/projects/1a5/scripts/<registrationToken>

注意: rancher/agent 的版本与 rancher/server 的版本是相关的,执行添加自定义主机的时候,需要注意注册脚本的 rancher/agent 是否正确。正常情况下,通过操作界面获取的脚本内的版本信息都是正确的,用户不需要做额外修改。

自动添加的标签

Rancher 会自动创建一些和Linux内核版本信息以及Docker引擎版本信息相关的标签。

描述

io.rancher.host.linux_kernel_version

Linux内核版本 (e.g, 3.19)

主机当前运行的内核版本

io.rancher.host.docker_version

Docker引擎版本 (e.g. 1.10)

主机运行的 Docker 版本

io.rancher.host.provider

云提供商信息

目前仅适用于某些云提供商

io.rancher.host.region

云提供商地域

目前仅适用于云提供商

io.rancher.host.zone

云提供商区域

目前仅适用于云提供商

主机调度地址

为了使Rancher可以在有多个IP的主机上暴露端口,需要给这些主机进行配置,从而使Rancher知道哪些IP可以使用。配置调度IP的方法取决于这台主机是已经存在的主机(运行了 rancher/agent 容器的服务器)还是还没有添加的主机(还没有运行 rancher/agent 容器的服务器)。

给已有主机添加调度地址

在环境中已存在的主机,可以通过增加io.rancher.scheduler.ips标签来设置调度IP。通过操作界面,点击这台主机的编辑按钮,然后增加 调度IP。如果是通过接口的方式,只需要给主机添加标签 io.rancher.scheduler.ips 和值(多个地址,可以通过逗号分隔)即可。

注意: 在没有添加调度地址前,如果某些容器已经暴露了端口,那么这些容器的端口暴露在0.0.0.0上。那就意味着,已有的容器已经占用了全部的IP地址,后来添加的调度地址也被占用了。

给新主机添加调度地址

对于新添加的自定义主机 需要像下面的例子,给注册脚本增加一个环境变量 CATTLE_SCHEDULER_IPS :

$  sudo docker run -e CATTLE_SCHEDULER_IPS='1.2.3.4,<IP2>,..<IPN>' -d --privileged \
     -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.8.2 \
     http://<rancher-server-ip>:8080/v1/projects/1a5/scripts/<registrationToken>

在代理后的主机

如果当前的环境是在代理之后,要给Rancher添加主机,需要修改这台主机的Docker deamon指向代理。相关的细节可以浏览本文,在此不在累述。


访问云提供商的主机

当用Rancher添加云提供商的主机时,实质上是采用Docker Machine执行的工作。

克隆主机

在云提供商上启动主机需要使用访问密钥,Rancher提供了克隆的方法,来轻松地创建另一个主机,而无需再次输入所有认证配置。在操作界面上,从 基础架构 进入 主机 页面,点击某台主机的下拉菜单,选择 克隆,然后就会进入之前的认证配置都已经填写的 添加主机 页面。

修改主机

在操作界面上,从 基础架构 进入 主机 页面,点击需要修改的主机的下拉菜单,选择 编辑,就可以修改这台主机的名称,描述以及标签。

启停主机

停止一台主机后,操作界面上会显示 Inactive 状态。在这种状态下,不会再有容器服务被部署到这台主机。而处于 Active 状态下的主机,容器服务会被正常的部署、停止、重启或销毁。

如果需要停止一台主机,从 基础架构 进入 主机 页面,点击需要停止的这台主机的下拉菜单,选择 停用 即可。

如果需要把一台停止的主机重新激活,从 基础架构 进入 主机 页面,点击已经停止的这台主机的下拉菜单,选择 激活 即可。

注意: 在Rancher中如果主机宕机了(比如处于 reconnecting 或 inactive 的状态),需要给服务配置健康检查 以便于Rancher把这台宕掉的主机上的容器服务迁移到其他主机上执行。

在Rancher内删除主机

在 Rancher 内删除主机的操作需要进行几个步骤:从 基础架构 进入 主机 页面,点击需要删除的主机的下拉菜单,选择 停用。当主机完成停止以后,将会显示 Inactive 状态。然后点击下拉菜单,选择 删除,Rancher 会执行对这台主机的删除操作。当显示 Removed 状态时,就表示这台主机已经被删除了。但是,仍然可以在操作界面上看到这台主机,只有当点击下拉菜单,选择 清理后,这台主机才会从操作界面上消失。

如果这台主机是由 Rancher 调用 docker-machiine 基于云提供商的驱动创建,按照上述的删除操作执行后,被删除的主机也会在云提供商的管理界面中消失。但是,如果是采用 添加自定义主机 的方式所添加的云提供商主机,被删除的主机还会在云提供商的管理界面中被查看到。而且这台主机内的容器服务(例如 rancher/agent)还是保留着的。可以认为通过自定义添加的云提供商的主机被删除后,只是从Rancher的调度中解离出去,但是它原来的生命周期Rancher不会干涉。

注意: 对自定义主机,包括Rancher Agent在内的全部容器都会保留在该主机上。同时,Rancher网络驱动创建的docker0上的IP也将会保留。

在Rancher外删除主机

在Rancher外删除主机,也就是意味着不是按照Rancher操作界面或者API来删除主机。最简单的例子就是,在Rancher集群内,有一台云提供商提供的主机。通过云提供商的管理界面删除了这台主机,这个删除行为Rancher是无法感知的。Rancher会一直尝试重新连接这台已经删除的主机,并显示 Reconnecting 的状态,之后主机会显示 Disconnected 状态。 因此,为了同步回删除的状态,还需要从 基础架构 进入 主机 页面,点击已经删除的主机的下拉菜单,选择 删除。 您也可以配置一个延迟用于自动删除失联主机。这个配置叫做host.remove.delay.seconds,您可以在系统 -> 设置 -> 高级选项中找到这个配置。

4.2添加Amazon EC2主机

Rancher支持使用docker machine部署Amazon EC2

找到AWS凭据

在AWS上开启一台主机之前,您需要找到您的AWS账号凭证和您的安全组信息。通过亚马逊的文档找到正确的密钥,从而找到您的账号访问信息。对新创建的密钥对access keysecret key,务必将它们保存好,一旦丢失将会不可用。

启动Amazon EC2主机

通过基础架构 -> 主机进入主机主界面,点击添加主机,选中Amazon EC2图标,选择您所在的区域,并提供您访问AWS的密钥对Access keySecret Key,点击下一步:验证及选择网络。Rancher将会根据您提供的凭据决定是否在AWS上创建新的实例。

为了创建实例,您需要选择一个可用的区域,根据您选择的区域,会显示可用的VPC IDs和Subnet IDs,选择一个VPC ID或者子网ID,并点击下一步:选择一个安全组.

接下来,为您的主机使用选择一个安全组,这里有两种模式可供选择。一种是Standard,该模式将会创建或者直接使用已经存在的rancher-machine安全组,这种安全组默认会开放所有必要的端口,以便Rancher能够正常工作。docker machine将会自动打开2376,该端口是Docker守护进程用到的端口。

另一种是Custom,该模式下您可以选择一个存在的安全组,但是需要自己确定指定的端口已经打开,以便Rancher能够正常工作。


Rancher需要用到的端口:

  • Rancher Server访问的TCP端口 22 (通过SSH安装和配置Docker)
  • 如果您正在使用IPsec 网络驱动, 所有主机都需要打开UDP端口5004500
  • 如果您正在使用VXLAN 网络驱动, 所有主机需要打开UDP端口4789

注意: 如果您再次使用rancher-machine安全组, 之前任何丢失的端口都不会再次打开。如果主机没有正常启动,您需要检查AWS上的安全组。

选择安全组选项之后,点击下一步:设置实例选项

最后,您只需要完成填写主机的的一些细节信息。

  • 使用滚动条选择需要启动的主机的数量。
  • 如果需要为主机提供一个名字描述
  • 根据您的需要选择实例类型
  • 选择镜像的根大小docker machine中默认大小为16G,这也是Rancher默认需要的大小。
  • (可选) 对于AMIdocker machine 默认是该特定区域的一个Ubuntu 16.04 LTS镜像。您也可以选择您自己的AMI,但是如果您选择自己的AMI,请确保以下几点:
  • 在前面选中的区域中是可访问的;
  • 定义正确的SSH User。如果是使用的RancherOS AMI,SSH User就应该是rancher

4.3添加Azure Hosts

ancher支持使用docker machine部署Microsoft Azure

准备工作

在您可以部署一台Azure主机之前,您需要获取到Subscription ID, Client IDClient SecretClient IDClient Secret需要通过创建一个应用注册。您可以在微软官方文档中获取更多信息。

使用Azure控制台

登陆https://portal.azure.com并且输入您的账号密码。

Subscription ID

问了获取到Subscription ID,需要进到More services里,然后搜索Subscriptions并且打开它。Subscription ID会显示在SUBSCRIPTION ID这列里,紧挨着Subscription name。

应用注册

Follow the steps below to create an App registration and the corresponding Client ID and Client Secret.通过如下步骤创建一个应用注册,并且获取相应的Client IDClient Secret

  • 选择Azure Active Directory.
  • 选择App registrations.
  • 选择New application registration.
  • 选择一个Name, 选择Web app / API作为Application Type,并且任意输入一个Sign-on URL
  • 选择Create.在App registrations界面中,您应该可以看到您的应用注册。这个值显示在APPLICATION ID这列里,它就是您所需要的Client ID。下一步是生成Client Secret:
  • 打开您刚创建好的应用注册。
  • Settings页,打开Keys
  • 输入一个Key description,并且选择一个过期时间,点击Save
  • Value列中显示的自动生产的值就是您需要的Client Secret。这个值仅仅会被显示一次。最后一件事是给您的应用注册合适的权限。
  • 进入More services,搜索Subscriptions并打开它。
  • 打开Access control (IAM)
  • 选择Add
  • Role那栏选择Contributor
  • Select那栏选择您创建的应用注册名称。
  • 点击Save.

启动Azure主机

  • 为主机提供一个名称
  • 使用滚动条选择您要启动的主机的数量
  • 选择您的Azure资源所在的区域
  • 默认的环境AzurePublicCloud,但如果您使用的是政务云,您可以在这里对其进行修改。
  • 您可以输入Availability SetResource Group的名称,如果没有的话会进行创建。
  • 输入正确的上面提到的Subscription IDClient IDClient Secret
  • 您可以自己定义您的网络设置,也可以使用默认的设置。
  • 选择一个您想要使用的镜像。任何Azure支持的docker-machine在Rancher中也同样支持。如果您设置了镜像,请不要忘记修改SSH User为正确的用户。
  • 选择镜像的大小
  • 您可以修改Docker端口存储类型
  • (可选)向主机添加标签,以帮助组织主机并调度服务/负载均衡器或者是使用除主机IP之外的其他IP解析外部DNS记录.
  • (可选)在高级选项中,您可以利用Docker引擎选项定制您的docker-machine create工具。
  • 所有的完成之后,点击创建。一旦您点击创建,Rancher将会创建Azure虚拟机,并在实例中开启 rancher-agent 容器。几分钟之后,主机将会启动并可以添加服务

4.4添加Custom主机

如果您已经部署了Linux主机,并且希望将它们添加到Rancher中。在点击Custom图标之后会,Rancher会自动生成一个docker命令脚本,将其拷贝到每一台主机上并运行这条命令来启动rancher/agent容器。

如果您在使用不同的环境,不同环境生成的添加主机命令是不一样的。

确保您所在的环境就是您想要添加主机的环境。您所在的环境显示在UI的左上角。当您第一次登录进去之后,您是处于名称为默认的环境里。

一旦您的主机添加到Rancher之后,您就可以开始添加服务了。

注意: 确保运行Rancher Server的主机和您所添加的主机的时钟是一样的并且能够正常访问主机上的容器。更多信息,请参考在Rancher中访问容器的命令行和日志

主机标签

您可以给每台主机添加标签,以帮助您组织您的主机。在启动rancher/agent容器时,您所添加的标签会以环境变量的形式添加到主机上。添加的标签是一组键值对,并且键值必须是唯一的。如果您添加了两个具有相同键不同值的标签,那么将会以您后面添加的值为准作为标签值。

增加标签之后,您可以使用这些标签来调度服务/负载均衡器,并且可以为您主机上的服务创建黑白名单。

添加自定义主机的时候,您可以在UI上添加标签,之后将会自动将带有键值对的环境变量(CATTLE_HOST_LABELS)添加到UI上出现的命令里。

例子

# Adding one host label to the rancher/agent command
 $  sudo docker run -e CATTLE_HOST_LABELS='foo=bar' -d --privileged \
 -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.8.2 \
 http://<rancher-server-ip>:8080/v1/projects/1a5/scripts/<registrationToken>
  
 # Adding more than one host label requires joining the additional host labels with an `&`
 $  sudo docker run -e CATTLE_HOST_LABELS='foo=bar&hello=world' -d --privileged \
 -v /var/run/docker.sock:/var/run/docker.sock rancher/agent:v0.8.2 \
 http://<rancher-server-ip>:8080/v1/projects/1a5/scripts/<registrationToken>

安全组/防火墙

对于添加的任何主机,请确保安全组或者防火墙允许流量经过,否则Rancher的功能将会受限。

  • 如果您正在使用IPsec网络驱动,要开放所有主机上的UDP端口500和4500。
  • 如果您正在使用VXLAN网络驱动,要开放所有主机上的UDP端口4789
  • k8s主机 :用作K8s的主机需要开放1025010255端口来为kubectl使用。为了访问外部的服务,NodePort使用的端口也需要开放,默认的是TCP端口30000 - 32767

在运行Rancher Server的机器上添加主机

如果您想将正在运行Rancher Server的主机同时添加为Agent主机,您必须修改UI上提供的命令行。在UI上,您需要指定这台主机的注册IP,它将会作为环境变量自动添加到命令行中。

$ sudo docker run -d -e CATTLE_AGENT_IP=<IP_OF_RANCHER_SERVER> -v /var/run/docker....

如果您已经把运行Rancher Server的主机同时添加为了Agent主机,请注意由于Rancher Server需要暴露8080端口,所以同一台主机上那些绑定8080端口的容器将无法创建,否则将会出现端口冲突的情况,造成Rancher Server停止运行。如果您一定要使用8080端口,那么您需要在启用Rancher Server的时候用另一个端口。

添加代理服务器之后的主机

为了在HTTP代理服务器后面添加主机, 需要通过配置docker deamon将docker指向这个代理。在添加自定义主机之前,修改文件/etc/default/docker,指向您的代理并重新启动docker。

$ sudo vi /etc/default/docker

在文件里,编辑#export http_proxy="http://127.0.0.1:3128/&#34;,使其指向您的代理。保存您的修改并且重启docker。在不同的系统上重启docker的方式是不一样的。

注意: 如果是用systemd启动的docker, 那么修改http代理的方式请参考docker 介绍

为了在代理后添加主机,您不用在命令行中添加其他环境变量来启动Rancher Agent。您只需要保证您的docker daemon配置正确就可以了。

如果您想要在Rancher Agent内使用该代理,您需要修改这个自定义命令,并添加相关的环境变量。

同时包含私有IP和公共IP的虚拟机

默认情况下,对于同时包含私有IP和公共IP的虚拟机,IP地址将会根据主机注册地址中指定的地址来确定。例如,如果注册地址中使用的是私有IP,那么就会使用主机的私有IP。如果您想修改主机的IP地址,您需要编辑UI中提供的命令行。为了使Rancher Agent中的容器能够正常启动,需要将环境变量CATTLE_AGENT_IP设置成期望的IP地址。Rancher中所有的主机都需要和Rancher Serve在同一个网络。

$ sudo docker run -d -e CATTLE_AGENT_IP=<PRIVATE_IP> -v /var/run/docker....

如果在Agent已经连接之后需要修改主机的IP,那么请重新运行添加自定义主机的命令行。

注意: 当设置成私有地址之后,Rancher中已经存在的容器将不在同一个托管网络内。

4.5添加DigitalOcean主机

Rancher 通过使用 docker machine 来管理 DigitalOcean 提供的主机。

获取DigitalOcean访问凭证

为了能启动 DigitalOcean 主机, 需要获取由 DigitalOcean 提供的 Personal Access Token(私有访问令牌) 。 首先,登录 DigitalOcean,然后:

  • 切换到 Apps & API(应用及接口)页面;
  • 选中 Personal Access Tokens(私有访问令牌汇总)菜单,点击 Generate New Token(创建新令牌)。给新令牌起一个名称,然后点击 Generate Token(创建令牌)
  • 从界面上把 Access Token(访问令牌) 复制出来并妥善保管。注意,这是唯一一次可以完整的看到 access token。重新访问这个页面,将无法再看到完整的信息。

4.6启动DigitalOcean主机

接下来来启动 DigitalOcean 主机。在 Rancher 的操作界面中,选择 Infrastructure(基础架构) -> Hosts(主机),点击 Add Host(添加主机),选择 DigitalOcean图标。

  • 拖动滑条来选择需要启动的主机数目;
  • 输入 Name(名称),需要详细备注的时候就填写 Description(描述)
  • 输入刚才获取的 Access Token(访问令牌)
  • Rancher 对 docker machine 的支持和 DigitalOcean 是一样的,所以选择需要启动的 Image(镜像) 即可;
  • 输入 Size(大小)
  • 选择希望主机启动时所在的 Region(地域),Rancher 是通过调用 DigitalOcean 的metadata来获取合适的地域列表,因此无法支持不在这个列表内的地域;
  • 接下来是可选的。必要时,可以选择启用例如backups(备份),IPv6,private networking(私有网络)等高级选项操作;
  • 必要时,添加 labels(标签) 来辅助管理主机以及 调度服务或负载均衡,也可以 通过DNS-IP映射来管理不在 Rancher 内启动的服务
  • 必要时,通过 Advanced Options(高级选项),定制化 Docker engine options(Docker引擎选项) 来控制 docker-machine create 时用到的选项指令;
  • 一切准备就绪后, 点击 Create(创建)。点击创建后,Rancher 将创建 DigitalOcean 的 droplet(主机),接着在 droplet 上启动一个 rancher-agent 的容器。几分钟之后,就可以通过 services(服务) 页面看到一个Rancher的主机被启动了。

4.7添加Exoscale主机

Rancher 支持使用 docker machine 来管理 Exoscale 提供的主机。

获取Exoscale访问凭证

为了能启动 Exoscale 主机,需要获取由 Exoscale 提供的 API Key(接口密钥) and Secret Key(加密密钥)。登录到 Exoscale,进入 API Keys 页面,选择 Profile就可以获取到接口密钥和加密密钥。

启动Exoscale主机

选择 Infrastructure(基础架构) -> Hosts(主机),点击 Add Host(添加主机),选择 Exoscale图标。 输入获取的 API Key(接口密钥) 和 Secret Key(加密密钥),然后点击 Next: Authenticate & select a Security Group(下一步:校验并选择一个安全组)

接下来,将会选择一个被主机使用的安全组。这里有两种安全组的选择:第一种,Standard(标准) 选项,是支持 rancher-machine的安全组。如果选择该选项,Rancher服务将会打开所有Rancher代理可以被成功运行所需要的端口。而2376(Docker deamon的端口)也会被打开。

另外一种,是 Custom(自定义) 选项,可以选择任何一个已经存在的安全组,但必须确保Rancher代理正常执行的所有特定端口会被打开。


Rancher代理运行需要的端口:

注意: 当选用安全组 rancher-machine时,那些在安全组中匹配的端口不会被重新打开。这就意味着,当发现运行不正常时(有可能是因为主机上的端口打开不正确或者没有被打开导致的),需要检查Exoscale上面的端口的情况。

选择好安全组的选项后, 点击 Next: Set Instance Options(下一步:配置主机实例选项).

最后阶段,只需要完善主机配置的一些细节即可:

注意: 目前 Exoscale 的操作界面上并没有显示所有 docker machine的选项。Rancher默认使用的 Exoscale 的终端(https://api.exoscale.ch/compute),镜像(ubuntu-14.04)以及可用地域(ch-gva-2)。

点击创建以后,Rancher将会创建一个 Exoscale 的主机,接着在主机上启动一个 rancher-agent 的容器。几分钟之后,就可以通过 services(服务) 页面看到一个Rancher的主机被启动了。

4.8添加Packet主机

Rancher 通过使用 docker machine 来管理 Packet 提供的主机。

获取Packet访问凭证

为了能启动 Packet 主机,需要获取由 Rackspace 提供的 API Key(接口密钥)。首先,登录 Packet,然后:

  • 切换到 api-key(接口密钥)页面,创建一个新接口密钥;
  • 在创建新接口密钥的界面上,可以给新接口密钥增加一个描述,然后点击 Generate(创建)
  • 接下来可以看到新创建的 Token(令牌),复制出来并妥善保管。

启动Packet主机

选择 Infrastructure -> Hosts(基础架构 -> 主机),点击 Add Host(添加主机),选择 Packet图标。

  • 拖动滑条来选择需要启动的主机数目;
  • 输入 Name(名称),需要详细备注的时候就填写 Description(描述)
  • 输入刚才获取的 API Key(接口密钥)
  • 输入希望启动的 Project(项目),必须是 Packet 账户中支持的;
  • Rancher 对 docker machine 的支持和 Packet 是一样的,所以选择需要启动的 Image(镜像) 即可;
  • 输入 Size(大小)
  • 选择希望主机启动时所在的 Region(地域)
  • 必要时,添加 labels(标签) 来辅助管理主机以及 调度服务或负载均衡,也可以 通过DNS-IP映射来管理不在 Rancher 内启动的服务
  • 必要时,通过 Advanced Options(高级选项),定制化 Docker engine options(Docker引擎选项) 来控制 docker-machine create 时用到的选项指令;
  • 一切准备就绪后, 点击 Create(创建)。点击创建后,Rancher 将创建 Packet 的主机,接着在主机上启动一个 rancher-agent 的容器。几分钟之后,就可以通过 services(服务) 页面看到一个 Rancher 的主机被启动了。

4.9添加Rackspace主机

Rancher 支持使用 docker machine 来管理 Rackspace 提供的主机。

获取Rackspace访问凭证

为了能启动 Rackspace 主机,需要获取由 Rackspace 提供的 API Key(接口密钥)。首先,登录 Rackspace,然后:

  • 切换到 Account Settings(账户设置界面);
  • 在 Login Details(登录明细)中,可以看到 API Key(接口密钥)的按钮。点击它就可以看到完整的接口密钥,接下来会在 Rancher 中使用这串密钥。

启动Rackspace主机

选择 Infrastructure(基础架构) -> Hosts(主机),点击 Add Host(添加主机),选择 Rackspace图标。

  • 拖动滑条来选择需要启动的主机数目;
  • 输入 Name(名称),需要详细备注的时候就填写 Description(描述)
  • 输入刚才登录 Rackspace 的 Username(用户名)
  • 输入刚才获取的 API Key(接口密钥)
  • 选择希望主机启动时所在的 Region(地域)
  • 选择主机的 Flavor(类型)
  • 必要时,添加 labels(标签) 来辅助管理主机以及 调度服务或负载均衡,也可以通过DNS-IP映射来管理不在 Rancher 内启动的服务
  • 必要时,通过 Advanced Options(高级选项),定制化Docker engine options(Docker引擎选项)来控制 docker-machine create 时用到的选项指令;
  • 一切准备就绪后, 点击 Create(创建)。点击创建后,Rancher 将创建 Rackspace 的主机,接着在主机上启动一个 rancher-agent 的容器。几分钟之后,就可以通过 services(服务) 页面看到一个 Rancher 的主机被启动了。

4.91添加其他云主机

Rancher 支持使用 docker machine 来管理其他云提供商的主机服务。通过提供一个通用的界面,输入必要的参数键值对,然后作为 docker-machine运行的参数。

查阅 Docker Machine 的默认值文档来确保默认值符合预期想法。

添加云提供商的驱动

通过 Admin(系统管理)的 machine drivers(主机驱动) 页面来添加。

启动云提供商的主机

选择 Add Host(添加主机) 页内的 Other(其他):

  • 拖动滑条来选择需要启动的主机数目;
  • 输入 Name(名称),需要详细备注的时候就填写 Description(描述)
  • 选择要被使用的 Driver(驱动)
  • 根据选择的 Driver(驱动),输入对应的 Driver Options(驱动选项)。这些选项参数将会直接被 docker machine调用;
  • 必要时,添加 labels(标签) 来辅助管理主机以及 调度服务或负载均衡,也可以 通过DNS-IP映射来管理不在 Rancher 内启动的服务
  • 必要时,通过 Advanced Options(高级选项),定制化 Docker engine options(Docker引擎选项) 来控制 docker-machine create 时用到的选项指令;
  • 一切准备就绪后, 点击 Create(创建)。点击创建后,Rancher 将创建选择对应 Driver(驱动) 的(虚拟)主机,接着在主机上启动一个 rancher-agent的容器。几分钟之后,就可以通过 services(服务) 页面看到一个 Rancher 的主机被启动了。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   13   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   15   0   0 Docker
  DnoStTHsc0vp   2023年12月11日   11   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   54   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   13   0   0 Dockercentos