Rancher v1.x 使用手册之一
  it2nV7RK7uw1 2023年11月28日 17 0

一、入门

在本节中,我们将进行简单快速的Rancher安装,即在一台Linux机器上安装Rancher,并使其能够完成所有Rancher必要功能。

准备Linux主机

先安装一个64位的Ubuntu 16.04 Linux主机,其内核必须高于3.10。您可以使用笔记本、虚拟机或物理服务器。请确保该Linux主机内存不低于1GB。在该主机上安装 支持的Docker版本

在主机上安装Docker的方法请参照Docker网站的安装说明。

注意:目前Rancher尚不支持Docker for Windows以及Docker for Mac。

Rancher Server标签

Rancher Server当前版本中有2个不同的标签。对于每一个主要的release标签,我们都会提供对应版本的文档。

  • rancher/server:latest 此标签是我们的最新一次开发的构建版本。这些构建已经被我们的CI框架自动验证测试。但这些release并不代表可以在生产环境部署。
  • rancher/server:stable 此标签是我们最新一个稳定的release构建。这个标签代表我们推荐在生产环境中使用的版本。请不要使用任何带有 rc{n} 前缀的release。这些构建都是Rancher团队的测试构建。

启动Rancher Server

只需要一条命令就可以启动Rancher Server。当Rancher Server容器启动以后,我们将能查看到相关的日志。

$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
# Tail the logs to show Rancher
$ sudo docker logs -f <CONTAINER_ID>

启动Rancher Server只需要几分钟时间。当日志中显示 …. Startup Succeeded, Listening on port…的时候,Rancher UI就能正常访问了。配置一旦完成,这行日志就会立刻出现。需要注意的是,这一输出之后也许还会有其他日志,因此,在初始化过程中这不一定是最后一行日志。

Rancher UI的默认端口是 8080。所以为了访问UI,需打开http://<SERVER_IP>:8080。需要注意的事,如果您的浏览器和Rancher Server是运行在同一主机上的,您需要通过主机的真实IP地址访问,比如 http://192.168.1.100:8080 ,而不是 http://localhost:8080 或http://127.0.0.1:8080,以防在添加主机的时候使用了不可达的IP而出现问题。

注意: 1. 初始安装时Rancher的访问控制并未配置,任何能够访问您的IP地址的人,都可以访问您的UI和API。我们建议您配置 访问控制. 2. 国内的公有云主机,如果需要使用80和8080端口,需备案后才可以使用。

添加主机

在这里,为了简化操作,我们将添加运行着Rancher Server的主机为Rancher内的主机。在实际的生产环境中,请使用专用的主机来运行Rancher Server。

想要添加主机,首先您需要进入UI界面,点击基础架构,然后您将看到主机界面。点击添加主机,Rancher将提示您选择主机注册URL。这个URL是Rancher Server运行所在的URL,且它必须可以被所有您要添加的主机访问到——当Rancher Server会通过NAT防火墙或负载均衡器被暴露至互联网时,这一设定就非常重要了。如果您的主机有一个私有或本地的IP地址,比如 192.168..,Rancher将提示一个警告信息,提醒您务必确保这个URL可以被主机访问到。

因为我们现在只会添加Rancher Server主机自身,您可以暂时忽略这些警告。点击保存。默认选择自定义选项,您将得到运行Rancher agent容器的Docker命令。这里还有其他的公有云的选项,使用这些选项,Rancher可以使用Docker Machine来启动主机。

Rancher UI会给您提供一些指示,比如您的主机上应该开放的端口,还有其他一些可供选择的信息。鉴于我们现在添加的是Rancher Server运行的主机,我们需要添加这个主机所使用的公网IP。页面上的一个选项提供输入此IP的功能,此选项会自动更新Docker命令中的环境变量参数以保证正确。

然后请在运行Rancher Server的主机上运行这个命令。

当您在Rancher UI上点击关闭按钮时,您会被返回到基础架构->主机界面。一两分钟之后,主机会自动出现在这里。

基础设施服务

当您第一次登陆Rancher时,您将自动进入默认环境。默认已经为此环境选择了Cattle环境模板来启动基础设施服务。要想充分利用Rancher的一些功能,如DNS元数据网络健康检查,您需要启动这些基础设施服务。这些基础设施可以在应用栈 -> 基础设施中找到。在主机被添加至Rancher之前,这些栈会处于 unhealthy 状态。主机添加完成后,建议等到所有基础设施服务都处于active状态之后再添加服务。

在主机上,所有属于基础设施服务的容器将被隐藏,除非您单击“显示系统容器”复选框。

通过UI创建一个容器

导航到应用页面,如果您看到了欢迎屏幕,可以在欢迎屏幕中单击定义服务的按钮。如果您的Rancher设置中已有服务,您可以在任何现有应用中点击添加服务,或者创建一个新的应用来添加服务。应用只是将服务组合在一起的便捷方式。 如果需要创建新的应用,请单击添加应用,填写名称和描述,然后单击创建。 接着,在新的应用中单击添加服务

给服务取个名字,比如“第一个服务”。您可以使用我们的默认设置,然后单击创建。Rancher将开始在主机上启动容器。不论您的主机IP地址是什么,第一个容器的IP地址都将在 10.42.. 的范围内,因为Rancher已使用ipsec基础设施服务创建了一个托管网络。各容器之间是通过这个托管网络进行跨主机通信的。

如果您单击第一个容器的下拉列表,您将可以进行各种管理操作,如停止容器、查看日志或访问容器控制台。

通过Docker原生CLI创建一个容器

Rancher会显示主机之上的所有容器,即使有些容器是在UI之外创建的。在主机的shell终端中创建一个容器。

docker run -d -it --name=second-container ubuntu:14.04.2

在UI中,您将看到第二个容器在您的主机上出现!

Rancher会对Docker守护进程中发生的事件做出反应,调整自己以反映现实情况。您可以在此了解更多通过Docker原生CLI使用Rancher的事宜。

如果您查看第二个容器的IP地址,您将发现它不在10.42.. 范围内。它的IP地址是Docker守护进程分配的常用IP地址。这是通过CLI创建Docker容器的预期行为。

如果我们想通过CLI创建一个Docker容器,但仍希望它使用Rancher托管网络的IP地址,该怎么做呢?我们只需要在命令中添加一个标签(io.rancher.container.network=true),让Rancher知道您希望此容器成为托管网络的一部分。

docker run -d -it --label io.rancher.container.network=true ubuntu:14.04.2

创建一个多容器应用

上文中我们已经介绍了如何创建单个容器以及这些单个容器之间如何进行跨主机网络通信。然而,现实情况中,大多数应用程序其实是由多个服务构成的,而每个服务又是由多个容器构成的。比如说,一个LetsChat应用程序,就是由下列几项服务构成的:

  • 一个负载均衡器。负载均衡器把Internet流量转发给“LetsChat”应用程序。
  • 一个由两个“LetsChat”容器组成的web服务。
  • 一个由一个“Mongo”容器组成的数据库服务。负载均衡器的目标是web服务(即LetsChat),Web服务将连接到数据库服务(即Mongo)。

在本节中,我们将介绍如何在Rancher中创建和部署LetsChat应用程序。

导航到应用页面,如果您看到了欢迎屏幕,可以在欢迎屏幕中单击定义服务的按钮。 如果您的Rancher设置中已有服务,您可以在任何现有应用中点击添加应用,来创建一个新的应用。填写名称和描述,然后单击创建。 接着,在新的应用中单击添加服务

首先,我们将创建一个名为database的数据库服务,并使用mongo镜像。单击创建。您将立即被带到应用页面,页面中将包含新创建的数据库服务。

接下来,再次点击添加服务以添加其他服务。我们将添加一个LetsChat服务并链接到database服务。让我们使用名称web以及sdelements/lets-chat镜像。在UI中,我们可以移动滑块,将服务扩容至2个容器。在服务链接中,添加database服务并将其命名为mongo。就像Docker的做法一样,Rancher会在letschat容器里加入这个链接所需要的相关环境变量。单击创建

最后,我们将创建我们的负载均衡器。单击添加服务按钮旁的下拉菜单图标。选择添加负载均衡。提供一个类似于letschatapplb这样的名字。输入访问端口(例如80端口),选择目标服务(即web),并选择目标端口(即8080端口)。web服务正在侦听8080端口。单击创建

至此,我们的LetsChat应用程序已完成!在应用页面上,您可以查找到超链接形式的负载均衡所暴露端口。点击该链接,将会打开一个新的页面,您将能看到LetsChat应用程序了。

使用Rancher CLI创建一个多容器应用程序

在本节中,我们将介绍如何使用我们的命名行工具Rancher CLI创建和部署跟上一节中我们创建的一样的LetsChat应用程序。

当在Rancher中创建服务时,Rancher CLI工具与颇受欢迎的Docker Compose工具的工作方式类似。 它接收相同的docker-compose.yml文件,并在Rancher上部署应用程序。 您可以在rancher-compose.yml文件中指定更多的属性,该文件将扩展并覆盖docker-compose.yml文件。

在上一节中,我们创建了一个具有一个负载均衡器的LetsChat应用程序。如果您已经在Rancher中创建了它,您可以直接在UI中下载这些文件,只需在应用的下拉菜单中选择导出配置即可。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 UI中单击下载CLI(该按钮位于页面的右下角),即可下载Rancher CLI二进制文件,Windows、Mac和Linux的二进制文件均可下载。

若想使用Rancher CLI在Rancher中启动服务,您需要设置一些环境变量。您需要在Rancher UI中创建一个账户API Key。单击API -> 密钥。单击添加账户API Key。填写一个名字,然后单击创建。保存Access Key(用户名)Secret Key(密码)。通过运行rancher config配置RancherCLI,使用Rancher URL、Access Key和Secret Key。

# 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.ymlrancher-compose.yml 文件的目录中,运行下面这个命令。

$ rancher up -d -s NewLetsChatApp

在Rancher中,一个叫做NewLetsChatApp的应用将被创建,且所有服务都将在Rancher中运行起来。

以原生 Docker 命令行的形式使用 Rancher

Rancher整合了原生Docker CLI,所以Rancher可以和其它DevOps和Docker工具同时使用。从高层次上,这意味着如果您在Rancher外启动、停止、或销毁一个容器,Rancher能检测到相应的变化和更新。

Docker 事件监控

Rancher通过实时监控所有主机上Docker事件来更新自己的状态。因此,当容器在Rancher外启动、停止、或销毁时(比如,直接在主机上执行docker stop sad_einstein),Rancher能检测到这些变化和更新,并且相应地更新自己的状态。

注意: 目前的一个局限是:我们要等到容器启动(而不是创建)才能把容器导入到Rancher。 运行docker create ubuntu不会使相应的容器出现在Rancher UI,但运行docker start ubuntudocker run ubuntu会.

您可以在主机上运行docker events来观察Docker事件流。这个事件流就是Rancher正在监听的事件流。

添加 Docker 直接启动的容器到 Rancher 的网络

您可以在Rancher外启动容器,然后把它们添加到Rancher管理的网络中。 这意味着这些容器可以参与夸主机网络。要激活这个功能,创建容器时把io.rancher.container.network标签设为true 。下面是一个例子:

$ docker run -l io.rancher.container.network=true -itd ubuntu bash

请查阅Rancher中的网络了解更多关于Rancher管理的网络和夸主机网络的详情。

导入已有容器

Rancher支持在注册主机的时候倒入已有的容器。当您用Rancher UI上的自定义命令注册主机时, 任何当前在该主机上的容器都能被检测到,并且会被导入到Rancher。

周期性同步状态

除了实时监控Docker事件之外,Rancher还会周期性地和主机同步状态。每5秒钟主机就会向Rancher报告主机上的所有容器的状态,以保证Rancher中的状态和主机中的状态同步。这能够防止由于网络中断或服务器重启而导致Rancher遗漏某些Docker事件。 用这种方式来保持同步,主机上的容器的状态为单一数据源。比如, 如果Rancher认为一个容器正在运行,但它在主机上实际是停止的,Rancher会把容器的状态更新为停止,但Rancher不会尝试重启容器。



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

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

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   14   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   16   0   0 Docker
  LE2wsiBPlOhg   2023年12月06日   15   0   0 Dockercentos
  DnoStTHsc0vp   2023年12月11日   12   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   66   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   16   0   0 Dockercentos