/ DevOps

使用Rancher管理Docker集群

现在微服务架构比较流行,一个中小型的产品都可以有几十个容器,更简便可靠的管理这些容器会让开发运维方便许多。市面上比较流行的容器编排工具有Kubernetes,Docker Swarm,Mesos。安装配置这些工具并不是很容易,后来我发现Rancher似乎可以帮我简化这件事。

安装Rancher

安装Rancher很简单,一条命令就可以运行起来:

sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable

稍等一会(Rancher启动需要点时间)用浏览器访问http://localhost:8080 就可以看到Rancher的界面了
rancher-start

访问控制

这时看到菜单ADMIN上有个红色惊叹号是提醒你需要配置访问控制,否则,如果这是在公网IP上,所有人都可以控制了。

Rancher支持各种认证系统,比如常见的Github,LDAP,Active Directory等。当然也可以简单一点直接使用本地帐号,提供一个管理员帐号就好了,以后可以添加其他的帐号。
rancher-access-control

添加节点

菜单栏下有一条通知提醒你需要添加宿主节点。

首先需要注意的是Rancher中有个Environment概念,每个Environment是独立的,并且使用一种编排工具。Rancher支持Kubernetes,Docker Swarm,Mesos和它自己的Cattle,Rancher默认使用自己的Cattle。此时Rancher也默认建好了一个名字叫Default的Environment,现在添加宿主节点就是在Default中添加宿主节点。

添加之前,Rancher会向你确认访问服务器的url,以确保其他的宿主节点都可以访问到Rancher Server。

Rancher支持主流云计算服务提供商,也可以通过管理machine driver来添加其他提供商,比如阿里云。

rancher-add-host

简单点可以直接使用Custom来添加我们已有的机器,只需复制下面的docker命令在宿主机器上运行就可以了。需要确保所有的宿主机器互相都能访问UDP的500和4500端口。

加速Kubernetes

如果需要使用Kubernetes来做容器编排,因为众所周知的原因,下载部署所需的依赖会比较慢,可以使用牛小腩定制的Catalog来安装。两种方式:

  • 启动Rancher Server时设置DEFAULT_CATTLE_CATALOG_URL

    docker run -d --restart=unless-stopped -e \
    DEFAULT_CATTLE_CATALOG_URL='{"catalogs":{"community":{"url":"https://github.com/rancher/community-catalog.git","branch":"master"}, \
    "library":{"url":"https://github.com/niusmallnan/rancher-catalog.git","branch":"k8s-cn"}}}' \
    --name rancher-server -p 8080:8080 rancher/server:stable
    
  • 在菜单项Settings里设置

    rancher-kubernetes-catalog

添加Stack

Rancher中的Stack与docker-compose的项目是对应的,你可以认为是一个应用或者一组服务。

可以在Rancher中从Catalog中选择一些常见的应用来创建Stack,只需输入一些参数即可,比如Drone CI,Grafana,Docker Registry, ELK等。也可以在创建Stack的时候上传docker-compose.yml和rancher-compose.yml

Rancher实现了docker-compose 2命令的超集,支持了额外的指令,例如,基于haproxy的load balancer配置,容器编排规则等。

当然如果只通过界面操作来增加或升级服务,这会不太方便版本化配置以及自动化部署,Rancher有提供API,并且还提供了Rancher CLI来帮助自动化部署。Rancher CLI的使用和docker-compose基本一致,只需配置Rancher Url和API Key即可,这里就不再赘述了。

部署好各种服务后,在Hosts菜单项里就可以看到各个容器在几个宿主机器上的部署情况。Rancher还提供了简单的监控。

rancher-hosts

Jackson Zhang

Jackson Zhang

Odd-e敏捷教练,主要涉及组织,团队,产品,技术,工程实践等,曾为多家知名企业提供教练与培训服务。译有《用户故事与敏捷方法》,《.NET单元测试的艺术》和《实例化需求说明》。擅长工程实践(如测试驱动开发,单元测试,重构,持续集成等),产品探索(Impact Mapping,Pretotyping,Lean Startup等)与团队协作。zbcjackson AT gmail.com

Read More