Rancher搭建

首先rancher需要安装了docker的linux环境,我的系统版本为

cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

在docker的基础上启动rancher服务器,Rancher 服务器是一个 Docker image,所以其软件本身不需要安装,只需要执行 Docker 命令下载并且成功运行 Docker 服务器镜像即可。

执行命令

sudo docker run -d --restart=always -p 8080:8080 rancher/server

命令行参数解释:

  • docker run 的 -d 参数标示在后台运行
  • –restart=always 容器如果异常停止自动重启
  • -p 8080:8080 把 Rancher 服务器的UI 对外服务(容器内)的端口 8080(命令中第二个8080) ,绑定到到宿主机的8080(命令中第一个8080) 端口。
  • 后面跟的镜像名 rancher/server ,Docker 会首先检查本地有没有这个镜像,如果没有,Docker 会去 Docker Hub 将这个镜像下载下来,并且启动。

启动容器并指定端口,如果没有rancher/server镜像会自动下载。执行完成后查看镜像与容器运行情况:

Unable to find image 'rancher/server:latest' locally
latest: Pulling from rancher/server
bae382666908: Pull complete 
29ede3c02ff2: Pull complete 
da4e69f33106: Pull complete 
8d43e5f5d27f: Pull complete 
b0de1abb17d6: Pull complete 
422f47db4517: Pull complete 
79d37de643ce: Pull complete 
69d13e08a4fe: Pull complete 
2ddfd3c6a2b7: Pull complete 
bc433fed3823: Pull complete 
b82e188df556: Pull complete 
dae2802428a4: Pull complete 
c9b17cca6fc4: Pull complete 
41cc2c1ffe8c: Pull complete 
ae49123ce3ae: Pull complete 
2fe8cae58437: Pull complete 
ab963aad4fc2: Pull complete 
2dd932ceaa80: Pull complete 
71ff5e84e401: Pull complete 
0be35ae80349: Pull complete 
ae4f98e342e9: Pull complete 
Digest: sha256:cbe7d290460dfa83981d02506ff2588fdb3d5d988641c630c6f10bb7211fbfc6
Status: Downloaded newer image for rancher/server:latest
466bd0069bec617b6a2cb9e963a6e5716c2db04252fe917025b1bf84c6484dd2

以上步骤完成后,查看本机的ip地址,我这里用127.0.0.1,在浏览器输入 http://127.0.0.1:8080/ ,登录到rancher官网,为安全起见,设置管理账户:
在这里插入图片描述

根据提示将用户信息填写即可

在右下角有系统语言设置,选择中文

Rancher操作

添加主机

添加主机操作,根据网站指引操作,生成一条命令,在docker中运行,

sudo docker run -e CATTLE_AGENT_IP="10.X.X.70"  -e CATTLE_HOST_LABELS='ip=70'  --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://10.X.X.70:8080/v1/scripts/FF477B0D60DD9DECDF05:1514678400000:DSOvE2hEQFNLWf2626b1OP3Jg

会自动下载rancher/agent镜像
当在宿主机中运行完成后,网站中会显示成功添加主机
在这里插入图片描述
上面我添加了4个主机

Rancher的环境

Environment在Rancher中被定义为主要用于容器编排和管理的环境,比如Dev或者TEST或者PROD环境等等。目前Rancher支持如下四种:Cattle/Kubernetes/Mesos/Swarm, Cattle是Rancher自己内置的缺省的编排环境,缺省的Default的即为Cattle类型的。

添加stack、添加、升级service、添加负载均衡、外部服务、服务别名、服务的端口绑定、服务链接、环境变量、健康检查等

在这里添加stack:myapp。为其添加服务nginx,镜像为nginx,暴露端口8888。

未完待续…

某段时间后

rancher在按照上面的部署,大概再用了5个月后吧,登录服务器查看时发现好多组件都失效了,进入管理平台,会发现rancher安装后应该默认会自动升级,然而自动升级会有问题都会导致rancher/healthcheck等基础服务一直处于重启状态。一开始我是将rancher/server直接重启:docker restart container_id以及组件重启,但是发现仍然是失败!查看容器日志,基本上都是内部mysql数据库中的异常;

最终的解决方法是将 rancher/server 的镜像删除,然后重新pull下来最新的latest版本,然后重新执行;但是注意里面的应用需要重新部署一遍;

这里非常重要的一件事情是业务数据一定不要直接放在容器里面,一旦容器被rm掉,那数据就没有了,最好的办法总是需要数据目录挂载到本地 采用 docker run -d -v 本地目录:容器目录 …(docker下),rancher中配置挂载点
举个例子:mysql的数据挂载:
mysql数据卷挂载
/home/rancer/mysql-data/mysql:/var/lib/mysql ,另外注意,目录权限 sudo chown -R 102:105 /home/rancher/mysql-data

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐