Rancher 中文文档 —— 快速入门指南
2017-10-30 tech rancher docker 17 mins 2 图 6053 字
原文:http://rancher.com/docs/rancher/v1.6/en/quick-start-guide/
快速入门指南
在本指南中,我们将在一台 Linux 主机上安装 Rancher。
准备一台 Linux 主机
准备一台Linux主机:
- 使用64位的Ubuntu 16.04,必须有3.10+的内核
- 至少1G内存
- 安装了 Docker。
你可以使用笔记本、虚拟机或者物理服务器。
如何安装Docker可以参考官方文档。
注意: 目前 Rancher 不支持 Mac和 Windows 下的 Docker
译者注: 目前 Rancher v1.6 最好安装 Rancher 官方推荐的 Docker 17.06.0-ce.
Rancher server 标签
Rancher server 有两个不同的标签。对于每一个主要版本的标签,我们将提供特定版本的文档。
rancher/server:latest
标签将是我们最新开发版本。这些版本会已经通过我们的CI自动化框架验证。这些版本不意味着在它们可以在生产环境中部署。rancher/server:stable
标签将是我们最新的稳定版本。这个标签是我们推荐用于生产的版本。
请不要使用有任何带有rc{n}
后缀的版本。这些rc
是 Rancher 的测试版本。
启动 Rancher server
你需要一行命令来启动 Rancher server。启动后,我们将跟踪查看容器的日志。
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
# 跟踪日志
$ sudo docker logs -f <CONTAINER_ID>
需要几分钟的时间等待 Rancher serer 启动。当日志显示.... Startup Succeeded, Listening on port...
后,Rancher的 UI 就会启动并运行。
日志显示基本上是实时的。请不要以为这是在初始化时的日志的最后一行,后边可能还会有更多的日志。
注: 任何有 Rancher 所在主机IP的人员都可以访问 Rancher 的主界面和API。我们建议你进行 访问控制 的配置
添加主机
为简单起见,我们将 Rancher Server 所在的机器添加为主机。在实际环境中,我们推荐使用独立的(一个或多个)主机来运行 Rancher server。
要添加主机,访问的用户界面,然后单击Infrastructure,它会立即跳到Hosts页面。点击 Add Host。
Rancher 会提示你选择一个主机注册 URL。这个网址是 Rancher server 运行的地址,必须要保证其它被添加的主机都能访问到。把 Rancher 服务器的端口通过防火墙的 NAT 或者负载均衡器暴露出来,或者暴露到 Internet上在有些情况下是很有用的。如果你的主机有一个私有或者本地 IP 地址,例如: 192.168.*.*
;Rancher 将打印一个提示信息,告诉您是否确认这个 IP 地址可以被正常访问到。
现在我们添加 Rancher 服务器主机自身,因此我们可以忽略这个提示信息。点击保存。之后的页面中,默认情况下选中的是custom选项。在这可以得到运行 rancher/agent 容器的命令。这里还有其它的公有云的选项。
网页列出了需要服务器预先打开的端口和说明。由于我们正在添加 Rancher 服务器的主机,我们需要添加这个主机所使用的共有 IP。Rancher agent 命令中如果没有这个参数,这个主机的 IP 很可能会是个错误的配置。
在需要添加的主机上运行界面提示的命令。
当您单击关闭之后就会到达Stacks - > Infrastructure页面。等待一两分钟后,主机就自动出现了。
基础架构服务
第一次登录 Rancher, 你会自动处于 默认 环境中。在默认环境中我们使用了 cattle 的环境模板来添加一些基础架构服务。 这些基础架构服务需要预先被添加进来,才能获得 Rancher 框架的支持。这些基础架构服务可以在 ` Stacks -> Infrastructure` 里找到。
这些应用在添加主机之前都会会保持 unhealthy
的状态。在增加主机后,我们需要等待一点时间,直到这些应用变为 active
的状态。
在主机页面中,默认情况下,作为基础设施服务的容器不会显示出来。你也可以勾选显示系统容器
,将系统容器显示出来。
通过界面创建容器
编者注:你可能会混淆一些概念,下文翻译的“应用”英文原文都是stack,而不是application。这个翻译是按照 Rancher 里的中文翻译对应的,并非编者所创。
点击 stacks
进入 stack 页面。如果您看到欢迎屏幕,您可以点击定义一个应用。如果已经存在了一些应用,您可以点击添加服务于任何现有的应用,或创建一个新应用中添加服务。
应用/statck 仅仅是一个方便的方式来组服务结合在一起。如果你需要创建一个新的应用,点击添加应用,填好名称和描述,单击创建,然后点击添加服务。
假设我们定义了一个服务叫first-service
。你可以使用默认设置单机创建。 Rancher 就会将容器添加到主机中。无论你的主机IP地址是多少,这个first-service
容器的IP都会在 10.42.*.*
的范围内,因为在前文中 Rancher 使用了 ipsec
的基础设施服务,这个服务采用了 overlay 的网络架构解决容器间的跨主机通信问题。
在容器界面中,点击 first-container
的下拉菜单,你就可以进行一些容器的管理操作,例如停止容器、擦好看日志,或者进入命令行等。
通过 Docker 原生命令创建容器
Rancher也会显示那些通过 Docker 原生命令行创建的容器。
通过主机的终端,我们运行以下命令创建容器:
$ docker run -d -it --name=second-container ubuntu:14.04.2
在 Rancher 的主机页面上,你会看到一个名叫 second-container
的容器冒出来了。
Rancher 感知到 Docker daemon 发生的事件,并用恰当的方式将他们显示出来, 可以查看 native docker CLI. 获得更多的信息。
如果你查看 second-container
的 IP,你会发现它并不是10.42.*.*
范围里的,而是与 Docker deamon 类似的 IP。这是使用原生命令行创建容器的结果。
如果我们希望使用原生命令行创建容器,又将它纳入 Rancher 的 Overlay 网络,使得管理更为便利,应该怎么办呢? 很简单,我们为它在命令行中添加一个标签,例如io.rancher.container.network=true
,使得 Rancher 将这个容器识别为可以管理的。
$ docker run -d -it --label io.rancher.container.network=true ubuntu:14.04.2
创建一个多容器应用
我们已经展示了如何创建单独的容器,并解释它们如何将我们的跨主机网络的连接。然而,大多数现实中的应用,是创建多种服务,每个服务由多个容器组成。例如一个LetsChat应用,可以包括以下服务:
- 负载均衡器LB。负载均衡网络流量重定向到“LetsChat”应用程序。
- 一个_网络_服务 web service 由两个“LetsChat”容器组成。
- 一个 db service 由一个“Mongo的”容器组成。
lb 与 web service 相连,web service 与 db service 相连(例如Mongo)。
在本节中,我们将详细介绍如何创建和部署LetsChat在牧场主的应用。
导航到stacks页面,如果您看到欢迎屏幕,您可以点击 Define a Service。如果已经有相关的应用存在了,您可以点击** Add Stack来创建一个新的应用。填好名称和描述,单击创建。然后在新的应用中点击 **Add Service。
首先,我们使用mongo
镜像,创建一个名为database
的数据库服务。点击创建。你会立即回到应用页面(Stacks),其中将包含新创建的db service。
接下来,点击Add Service再添加另外的服务。我们将添加一个LetsChat服务,并链接到db service——创建一个名为web
的服务的并使用sdelements/lets-chat
镜像。
在页面中,我们将将滑块移动到——有服务的规模为2个容器。
在 Service Links,添加db service,并提供名称mongo
。
类似于Docker,Rancher 将从mongo
中链接所需的环境变量到letschat
镜像。点击创建。
最后,我们创建一个负载平衡器。点击旁边的下拉菜单图标Add Service按钮。选择 Add Load Balancer。我们明明为letschatapplb
。输入的源端口(即80
),选择目标服务(即web),并选择一个目标端口(即8080
, 假定 web service 监听 8080 端口), 点击创建。
我们LetsChat应用程序现在完成了!在Stacks页面,你就可以找到负载平衡器为网络上暴露的端口。点击这个链接,你就到了 LetsChat 的应用上了。
使用 Rancher CLI 创建多容器应用程序
在本节中,我们将向您展示如何使用 Rancher CLI 创建和部署相同的LetsChat
在 Rancher 中,使用 Rancher CLI 把应用拉起来,就像 Docker Compose 工具那么简单。你同样需要docker-compose.yml
文件来部署在 Rancher 上的应用。此外您可以指定一个额外的rancher-compose.yml
扩展和覆盖docker-compose.yml
的文件。
在上一节中,我们创建了一个带有负载均衡器的 LetsChat
应用。如果你已经在 Rancher 创建了它,你可以直接从应用中的下拉菜单导出配置。在docker-compose.yml
和rancher-compose.yml
文件是这样的:
DOCKER-COMPOSE.YML 示例
version: '2'
services:
letschatapplb:
#If you only have 1 host and also created the host in the UI,
# you may have to change the port exposed on the host.
ports:
- 80:80/tcp
labels:
io.rancher.container.create_agent: 'true'
io.rancher.container.agent.role: environmentAdmin
image: rancher/lb-service-haproxy:v0.4.2
web:
labels:
io.rancher.container.pull_image: always
tty: true
image: sdelements/lets-chat
links:
- database:mongo
stdin_open: true
database:
labels:
io.rancher.container.pull_image: always
tty: true
image: mongo
stdin_open: true
RANCHER-COMPOSE.YML 示例
version: '2'
services:
letschatapplb:
scale: 1
lb_config:
certs: []
port_rules:
- hostname: ''
path: ''
priority: 1
protocol: http
service: web
source_port: 80
target_port: 8080
health_check:
port: 42
interval: 2000
unhealthy_threshold: 3
healthy_threshold: 2
response_timeout: 2000
web:
scale: 2
database:
scale: 1
Rancher CLI 的二进制包可以在 Rancher 主页面的右下角找到。适用于 Windows Mac 和 Linux.
为了在Rancher CLI 中使用 Rancher 的一系列服务,我们还需要设置一些环境变量。我们需要在 Rancher 页面中创建一个帐户API密钥。点击API - > Key。点击添加帐户API密钥。填写名称,然后点击创建。保存Access Key和Secret Key。 之后就可以通过 Rancher URL,Access Key和Secret Key,使用 rancher config
来配置 Rancher CLI了。
# Configure Rancher CLI
$ rancher config
# Set the Rancher URL
URL []: http://<SERVER_IP>:8080/
# Set the access key, i.e. username
Access Key []: <accessKey_of_account_api_key>
# Set the secret key, i.e. password
Secret Key []: <secretKey_of_account_api_key>
现在,将 docker-compose.yml
和 rancher-compose.yml
保存后运行如下命令:
$ rancher up -d -s NewLetsChatApp
你就可以看到一个名为NewLetsChatApp的应用就启动起来了。