前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7安装Rancher 原

centos7安装Rancher 原

作者头像
尚浩宇
发布2018-08-17 11:23:04
1.2K0
发布2018-08-17 11:23:04
举报
文章被收录于专栏:杂烩杂烩

一、概述

    Rancher号称是全栈化容器管理平台,官网:https://www.cnrancher.com/

    Rancher的用途是什么?(请允许我复制一下官网的自我介绍,因为没什么比他更了解自己了)

    Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。    

    Rancher由以下四个部分组成:

    基础设施编排

    Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。

    Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络, 存储, 负载均衡, DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。

    容器编排与调度

    很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes, 和Mesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。

    除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。对于同一个服务,Cattle保证不少于N个容器运行(N<=Rancher集群中Agent个数,因为每个agent只能运行1个某类服务的容器)。但不保证高负载下自动扩充。如果需要扩充,需要手动扩充。

    应用商店

    Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店。

    企业级权限管理

    Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。

    下图展示了Rancher的主要组件和功能:

    更详细的文档请移步到http://rancher.com/docs/rancher/v1.6/zh/

    Rancher的github地址是https://github.com/rancher/rancher

二、安装

    本身docker安装部署就比较简单,难度不高于申请一个QQ,而且网上也能百度不少,为啥还要在这里再写一次呢?

    都是因为坑!首先官方的快速上手指南地址如下:https://www.cnrancher.com/rancherv2-0-quick-start-guide/

    指南里很详细的介绍了环境的要求,安装的准备,安装的步骤,以及使用。看着很详细,但是按照步骤一步一步走,但最终却老是跑不起来……

    起初我使用docker18.01.0,卡在Rancher启动后,访问8080端口,提示连接拒绝。又重新看了一遍指南,发现开头提示

    恍然大悟的感觉,于是重新安装了17.03.2版本。一顿折腾,再启动Rancher,依然提示连接拒绝。无奈之下,登陆官网的论坛,发帖求助。求助帖地址:https://forums.cnrancher.com/q_58.html?notification_id=532&rf=false&item_id=115#!answer_115

    等回帖的过程,无意发现了Rancher的github地址,却发现github上得get start和官网文档不一样,WTF!按照github上得命令启动,再访问,成功了。

    后来再看回帖时,非常感谢王伟军的解答,内容如下:

代码语言:javascript
复制
rancher/server:preview 表示2.0技术预览版,还在开发中...
rancher/server 什么也不加,表示rancher/server:latest,最新稳定版,目前是v1.6.14
建议加上固定的版本号,比如:
rancher/server:v1.6.14
 
有关rancher server 各个版本的情况,可以参考下面的链接:
https://github.com/rancher/rancher/tags
https://github.com/rancher/rancher/releases/tag/v1.6.14
https://github.com/rancher/rancher/releases/tag/v2.0.0-alpha12  

    有点废话,但是还是要把正确的启动命令贴出来一下

代码语言:javascript
复制
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

    另外,生产环境下建议部署集群模式的Rancher,集群相比于但容器只是在启动命令上多加几个参数,如

代码语言:javascript
复制
# 机器172.16.42.163
docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server   --db-host 172.16.40.5 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle  --advertise-address 172.16.42.163
# 机器172.16.110.2
docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server   --db-host 172.16.40.5 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle  --advertise-address 172.16.110.2

    但是,执行前需要初始化数据库,初始化命令如下:

代码语言:javascript
复制
> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';

三、使用

    本文的重点不是介绍Rancher多么厉害,也不是重点说如何按照,而是如何使用他的UI,如何通过UI完成我们想要做的事情。

    打开浏览器,访问http://host:8080,进入主页面

    关于语言。可能刚进去的时候,默认语言是英文。如果想要使用中文,将页面拖到最底,在最右侧,点击语言下拉框,选择中文即可。

    关于功能。在最上面,依次可以看到Default、应用、应用商店、基础架构、系统管理、API。

    Default,这个主功能对应的是环境,不同环境下,应用相互隔离。比如可以设置开发环境、测试环境、线上环境等。不同的环境还可以指定不同的编排引擎,默认是Cattle,可以切换成Kubernetes、Mesos、Swarm,值得一提的是,切换环境所需的软件Rancher会自动安装部署,无需额外操作。不过对Kubernetes的兼容还需要看具体的docker版本,详细请见如下链接http://rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versions,因为默认的Cattle已经能满足我得需求,故此没有考虑Kubernetes,所以直接使用了docker18.01.0,若想使用Kubernetes请使用docker17.03.x-ce(ee)版本

    应用,应用可以理解为是不同的服务,比如用户系统和订单系统,这是两个服务,每个服务下可以又细分为数据库、中间件、程序、管理后台等。同理,不同的应用下可以有很多子系统。在这里菜单下,主要分为用户和基础设施,所有人为创建的应用都归属到用户下,其他归属到基础设施下,比如健康检查、网络中心等。

    应用商店,理解了应用就好理解应用商店了,这里你不用自己手动去创建你所需要的服务,你只需要鼠标点点就能构建出一整套的系统出来,比如一个BBS论坛,如果自己建,你可能需要数据库、后台、门户等,但是在应用商店里,可能别人已经创建好了,你只需要点一下,一个BBS论坛就能正常服务了。

    基础架构,在应用里创建的容器,主机信息、存储以及可能会用到的密文、证书还有镜像库,全部都在这里细化管理。

    系统管理,在这里可以进行审计日志、账号设置、系统进程、高可用、访问控制、主机驱动、系统设置功能,对系统进行详细的设置。

3.1、主机

    主机是最基础也是最核心的功能。进入基础架构->主机页面,点击添加主机按钮。

    可选主机有自定义、EC2、Azure等,这里我们选择自定义,然后按照页面提示确认所添加机器是否满足要求,原则上要求所有主机使用同一版本的docker。然后在第五步,复制脚本,到被添加的机器上执行,待执行完后,点击关闭,即可看到新加的机器。

3.2、环境

    环境之间相互隔离,保证服务的稳定性,点击Default->环境管理,可以增加新的环境。如果默认的环境模板不能满足需求,可以点击添加环境模板按钮。然后再点击添加环境按钮,选择新建的模板(大部分情况下,默认的模板已经够用)。

    添加环境非常简单,只要输入名称、描述,选择模板即可。注意名称不能是中文,如果输入了中文,点击创建后,会提示错误,再之后输入英文同样提示错误,不要紧张,不是你填错了,这是Rancher的一个无关痛痒的bug,回退一下,再点一次添加环境,重新输入就好了。

    细心的会发现这里有个访问控制,什么意思呢,就是不同的用户可以归属不同的环境,比如测试人员归属测试环境,不归属线上环境,访问控制的意思就是不是这个环境的成员,就看不到这个环境或无法操作这个环境。

3.3、应用

    按照经验来说,环境一旦创建好了,以后所有操作都应从环境这里开始。

    点击Default->Default,进入Default环境主页面。每个环境可以创建很多个应用,我们首先创建一个应用,比如叫first

    只需要输入名称和描述即可,其他默认,然后点击创建。点击之后会进入到应用的首页,

3.4、容器

    如何创建容器?千万不要去基础架构->容器里创建,虽然在那创建没问题,但是在那里创建的容器,在应用里是无法引用的。正确的做法,是在应用首页,点击添加服务按钮。这里有个容器混淆的地方,添加服务按钮的最右面有个下三角,点击之后会出现添加负载均衡、添加外部服务、添加服务别名,这时千万不要以为就这三个功能,还有一个最重要的添加服务本身这个按钮!下面介绍一下这四个功能:

    添加负载均衡。底层应该是用的HA,可以自动发现服务,即服务伸缩后,依然能够正确链接到服务。这个是必有的服务。

    添加外部服务。如果在过渡期,有些服务没有迁移到Rancher上怎么办?这时可以添加外部服务,流量经负载均衡分发到外部服务时,外部服务会再次转发流量到真实服务上。

    添加服务别名。这个没发现具体是干嘛,主要是给一个服务再起一个名字,当引用这个服务时,其实最终用的还是最开始的那个服务,比如服务A,我起个别名服务B,那服务C在引用服务B时,其实引用的时服务A。

    添加服务。这个是最主要的功能,通过这个功能,可以创建基于任何镜像的容器服务。

    下面我们来创建一个类似下图的应用,这是一个模拟网站的应用,有两个nginx,上面有个负载均衡(HA)负责分发流量到nginx,然后nginx在分发到具体的业务(这一步略过,后续会有专门的博文介绍)。

    首先点击添加服务按钮(不是下拉框)。表单分三块:

    第一块是指定数量。也就是这个服务在运行时最小容器数量,也可以指定在Rancher管理的主机范围内每台主机都运行这个容器。需要注意的是同一台主机同一个服务最多启动1个容器,也就是说,设置的数量必须小于等于Rancher管理的主机数量。

    第二块是设置名称和镜像,首先设置名称(只能英文),然后设置描述(可不填),然后设置镜像名称,最后设置nginx端口,这里可以绑定宿主机的端口,但除非测试,不要绑定到主机端口,容器应该处在相对封闭的内网,不应该暴露出去。协议选择TCP。另外除了创建新镜像,还可以选择已创建的服务。

    第三块是详细配置,比如命令、卷、网络、安全/主机、密文、健康检查、标签、调度。由于是中文系统,大多见文知意。这里简单描述下各自功能:

    命令:在这里可以设置命令、入口、工作目录、用户、控制台、环境变量等,有点类似Dockerfile。

    卷:容器挂载宿主机卷,比如某个目录,需要所有容器使用,就可以设置卷

    网络:有三种模式,托管(默认)、桥接、主机、无,一般托管即可,还可以设置dns等。

    安全/主机:在这里可以详细控制这个容器的权限,比如限制内存、限制交换区、限制CPU等。

    密文:这个很少有机会用到

    健康检查:这个是伸缩的依据,一定要配置!默认无,如果是无,即使容器挂了,也不会伸缩的。然后是TCP连接和http响应,一般TCP,选择TCP后,还需要配置一下端口,这个端口是容器私有端口,也就是第二块配置的端口。然后其他值自行选择配置。

    标签:可以对容器打标签,方便检索等使用。

    调度:调度+健康检查共同组成了自动伸缩功能。默认为每一个容器自动选择符合调度规则的主机,也可以自定义调度规则。

    最后点击创建,即可创建出一个容器。创建完成后,容器开始下载(第一次),然后初始化、最后运行。页面纯异步,不用刷新,即可看到最新状态。

    按同样的步骤创建出nginx-02。最终在应用首页展示如下:

    最后我们来创建一个负载均衡,同样分三块,第一块和第三块略过,主要描述第二块。

    名称和描述是惯例。下面端口规则有两类服务规则和选择器规则:

    容器规则。是负载到哪个容器上,比如刚才创建的nginx-01和nginx-02,表单里,从左往右分三段,第一段是配置协议,第二段是配置负载均衡,注意这里的端口是宿主机端口,第三段选择服务nginx-01,端口是私有端口,然后再点击添加服务规则,将nginx-02配置上,如下:

    选择器规则。根据url路径匹配到哪个服务。

    最后点击创建,最终应用首页如下:

    可以访问一下看看效果:

    在应用首页可以进行全部的操作,比如启停、删除、升级、编辑等一系列操作。

3.5、运维

    所有在环境下创建的任何信息,都可以在基础架构下分类查看。建议在环境下得应用里修改服务,从而修改容器,不建议直接在基础架构下修改对应信息。

3.5.1、监控

    在应用首页,点击服务名称,可以进入到服务监控页面,如下:

    在右侧列表里再点击名称,注意这个名称是Rancher针对nginx-01做的伸缩节点,名称规范是应用名-服务名-节点数,节点数从1开始。如果嫌麻烦,还可以直接点击基础架构->容器,找到伸缩节点,点击名称进入。

3.5.2、日志

    在服务监控页面的右侧,找到日志标签,点击他,可以看到容器的运行日志。

    注意这个日志不是nginx的日志。一个云架构下应该有自己的日志采集系统,不可取的是ELK。应该类似EKFK,即elasticsearch+kibana+flume+kafka,通过使用log4j的kafka插件,将日志直接上送到kafka,然后flume从kafka取出丢到es,受限于公司专利,不能贴出更详细的设计,不过EKFK涉及的自定义插件,归个人所有,详见我得主页,作品栏。

3.5.3、认证 

    如此重要的系统,必须要加认证,以防止恶意破坏。

    Rancher支持多种方式认证,常见的如github、ldap、本地等。

    以本地为例,在系统设置->访问控制页面,选择LOCAL,出现

    按要求填入用户名密码,比如root/1234,然后点击启用访问控制。即成功开启认证。不同的是如果需要添加账号,不是继续访问访问控制,而是访问系统管理下得账号管理。

    我们来添加一个账户,如下:

    那么如何来控制用户的环境归属呢,回到环境配置里,点击Default->环境配置,在Default数据行的最后面,点击编辑按钮,进入编辑页面。当前只有root归属到Default,下面我们把刚建的test加入进来,在文本框输入test,然后点击后面+号,即可添加用户到环境里。详见http://rancher.com/docs/rancher/v1.6/zh/environments/#%E6%88%90%E5%91%98%E8%A7%92%E8%89%B2,这里存在第二个bug,如果新建的用户,归属于用户角色,则无法登陆和被添加到环境里,并且修改为管理员后也不可以正常使用,只能先删除用户,然后在创建时就指定为管理员。一个折中的办法就是先创建管理员账户,然后加入到环境,再返回修改用户为用户角色即可。

3.5.4、私服

    对于大多数公司来说,把项目打包到共有仓库是不可行的,所以大多选择搭建私有仓库,来存储镜像。Rancher支持dockerhub、quay两种共有库,以及自定义私有库,点击基础架构->镜像库,然后点击添加镜像库。

    输入域名或ip,用户名密码即可,不过需要注意的是Rancher只支持HTTPS方式的私服,详见官方文档http://rancher.com/docs/rancher/v1.6/zh/environments/registries/#%E6%9B%B4%E6%94%B9%E9%BB%98%E8%AE%A4%E7%9A%84%E9%95%9C%E5%83%8F%E5%BA%93,推荐使用Harbor搭建私服(搭建参考https://cloud.tencent.com/developer/article/1188412)。

    创建完私服后,在环境里新增服务可以选择使用私服的镜像,只要在镜像那一栏指定私服地址即可,比如创建一个nginx镜像的容器,如果是使用dockerhub时输入nginx,但使用私服时需要输入完整的名称reg.yourdomain.com/library/nginx:0.1

3.5.5、命令行

    在服务监控页面进入容器首页,在右上角点击出现的下拉菜单中找到执行命令行,可以进入容器命令行页面,如下

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、安装
  • 三、使用
    • 3.1、主机
      • 3.2、环境
        • 3.3、应用
          • 3.4、容器
            • 3.5、运维
              • 3.5.1、监控
              • 3.5.2、日志
              • 3.5.3、认证 
              • 3.5.4、私服
              • 3.5.5、命令行
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档