一、Rancher简介
Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。Rancher可以轻松地管理各种环境的 Kubernetes,满足IT需求并为 DevOps 团队提供支持。Rancher 用户可以选择使用 Rancher Kubernetes Engine(RKE) 创建 K8s 集群,也可以使用 GKE,AKS 和 EKS 等云K8s 服务。Rancher 用户还可以导入和管理现有的 Kubernetes 集群。同时 Rancher UI 为 DevOps 工程师提供了一个直观的用户界面来管理他们的服务容器。
每个团队都可以在他们选择的公共云或私有云上部署应用程序,Rancher 在 IT 和 DevOps 组织中扮演的角色如下:
Rancher 2.x 版本基于Kubernetes 基础上重新设计,保留了 1.x 版本中的友好功能,同时提供了更多新的功能:
- 内置 CI/CD 流水线
- 告警和日志收集功能
- 多集群管理功能
- 集成 Rancher Kubernetes Engine (RKE)
- 与各云 Kubernetes 服务(如 GKE、EKS、AKS) 集成
Rancher由以下四个部分组成:
1、基础设施编排
Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。
Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络, 存储, 负载均衡, DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。
2、容器编排与调度
很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes, 和Mesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。
除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。
3、应用商店
Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店。
4、企业级权限管理
Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。
Rancher的特性:
1、采用图形化方式
易用的Web管理界面,在Docker易用性的基础上,再一次降低了使用容器技术部署容器应用的难度。
2、支持多种调度器
通过环境模板,很容易地创建和部署Cattle、Swarm、K8S、Mesos容器集群管理调度平台。
3、管理主机集群
管理对象是多台主机的集群,而不仅仅是单台容器主机,创建和管理几台、几十台应用服务器集群,只需要Ctrl+C、Ctrl+V,复制粘贴就解决了。
4、内置应用商店
使用其中的WordPress模板,创建一个WordPress博客系统,只需点点鼠标,部署难度不高于申请一个免费的电子邮箱!
5、资源弹性分配
内置应用负载均衡器,“服务”最小只需1个容器实例,当负载不够/或过剩时,只需点点鼠标,增加/减少“服务”中容器的实例数,即可解决问题,应用系统具有天生的弹性扩容能力。
使用文档:https://rancher.com/docs/rancher/latest/zh/
二、Rancher安装
Rancher是使用一系列的Docker容器进行部署的。运行Rancher跟启动两个容器一样简单。一个容器作为管理服务器部署,另外一个作为集群节点的Agent部署。
一、主机、IP规划和网络规划
- 服务器节点规划
主机名 | 操作系统 | IP地址 |
---|---|---|
master | Centos 7.4-x86_64 | 192.168.247.130 |
node1 | Centos 7.4-x86_64 | 192.168.247.131 |
node2 | Centos 7.4-x86_64 | 192.168.247.132 |
- 主机名修改
[root@localhost ~]# vi /etc/hosts
192.168.247.130 master
192.168.247.131 node1
192.168.247.132 node2
- 安装并运行rancher服务
[root@localhost ~]# docker run -d --restart=always -p 8080:8080 rancher/server
- 查看rancher运行情况
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19c5ceb53347 rancher/server "/usr/bin/entry /usr…" 5 minutes ago Up 5 minutes 3306/tcp, 0.0.0.0:8080->8080/tcp adoring_keller
- 查看rancher服务监听端口
[root@localhost ~]# netstat -antupl | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 11280/docker-proxy
-
Web访问
地址:http://192.168.247.130:8080/
切换成简体中文
三、权限管理
现在登录到Rancher不需要任何用户名密码,Rancher的用户体系需要自己开启
可以选择很多汇总认证的方式:
四、添加主机
拷贝代码在宿主机执行:
[root@localhost ~]# sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.247.130:8080/v1/scripts/02F981F653DB5E23FC92:1546214400000:34OLWTKutfcYVBq3KvAZ2yqhZQ
Unable to find image 'rancher/agent:v1.2.11' locally
v1.2.11: Pulling from rancher/agent
b3e1c725a85f: Pull complete
6a710864a9fc: Pull complete
d0ac3b234321: Pull complete
87f567b5cf58: Pull complete
063e24b217c4: Pull complete
d0a3f58caef0: Pull complete
16914729cfd3: Pull complete
bbad862633b9: Pull complete
3cf9849d7f3c: Pull complete
Digest: sha256:0fba3fb10108f7821596dc5ad4bfa30e93426d034cd3471f6ccd3afb5f87a963
Status: Downloaded newer image for rancher/agent:v1.2.11
INFO: Running Agent Registration Process, CATTLE_URL=http://192.168.247.130:8080/v1
INFO: Attempting to connect to: http://192.168.247.130:8080/v1
INFO: http://192.168.247.130:8080/v1 is accessible
INFO: Configured Host Registration URL info: CATTLE_URL=http://192.168.247.130:8080/v1 ENV_URL=http://192.168.247.130:8080/v1
INFO: Inspecting host capabilities
INFO: Boot2Docker: false
INFO: Host writable: true
INFO: Token: xxxxxxxx
INFO: Running registration
INFO: Printing Environment
INFO: ENV: CATTLE_ACCESS_KEY=E678D07EF7258D036C9C
INFO: ENV: CATTLE_HOME=/var/lib/cattle
INFO: ENV: CATTLE_REGISTRATION_ACCESS_KEY=registrationToken
INFO: ENV: CATTLE_REGISTRATION_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_URL=http://192.168.247.130:8080/v1
INFO: ENV: DETECTED_CATTLE_AGENT_IP=172.17.0.1
INFO: ENV: RANCHER_AGENT_IMAGE=rancher/agent:v1.2.11
INFO: Launched Rancher Agent: 5cbdaed544a48d812a6e29fd04ba6f7e972cda7381e423aed8efb85c49f54c4e
查看一下进程,多出一个 rancher/agent 的进程,并且已经运行。
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cbdaed544a4 rancher/agent:v1.2.11 "/run.sh run" 44 seconds ago Up 43 seconds rancher-agent
19c5ceb53347 rancher/server "/usr/bin/entry /usr…" 2 hours ago Up
[root@localhost ~]#
此时再回网页查看 Web 控制台界面,查看 Host 添加之后的结果。
可以看到已经多了一台活动主机(宿主机),上面运行一个 Rancher Server 容器,就是 Rancher 服务器自己。如果有其他主机,也可以添加其他主机进来。
五、Web UI 运行容器
现在通过图形界面来运行容器,而不是通过命令行。
-
添加容器
附:
国内docker镜像仓库:
六、常见问题
Rancher的管理员密码忘记怎么办?
Rancher提供了解决办法,可以登录到RancherServer的数据库容器中,修改cattle数据库setting表中的访问控制的字段值,禁用访问控制功能,隔几分钟之后,再次刷新Rancher的UI页面,就可以免密码登录到Rancher的UI页面了。
# 登录容器中的mysql
[root@localhost ~]# docker exec -it 19c5ceb53347 mysql
mysql> select * from setting;
+----+----------------------------------------------------+--------------------------------------+
| id | name | value |
+----+----------------------------------------------------+--------------------------------------+
| 1 | api.auth.ldap.openldap.group.dn.field | entryDN |
| 2 | api.auth.ldap.openldap.group.member.user.attribute | entryDN |
| 3 | install.uuid | f3eecf38-20b9-4d54-85e3-f99a947771ef |
| 4 | telemetry.opt | out |
| 5 | api.security.enabled | true |
| 6 | api.auth.provider.configured | localAuthConfig |
| 7 | api.auth.local.access.mode | unrestricted |
| 8 | api.auth.enabler | rancher_id:1 |
+----+----------------------------------------------------+--------------------------------------+
8 rows in set (0.03 sec)
mysql> update setting set value="false" where name="api.security.enabled";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update setting set value="" where name="api.auth.provider.configured";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
需要等待1分钟后,即可无密码登录。