目录
[二、Rancher API Server 的功能](#二、Rancher API Server 的功能)
[2.2、使用 Kubernetes 的功能](#2.2、使用 Kubernetes 的功能)
[三、Rancher 安装](#三、Rancher 安装)
[3.2、通过 Docker 来进行安装Rancher](#3.2、通过 Docker 来进行安装Rancher)
[3.3、在 Rancher 的界面上绑定k8s集群](#3.3、在 Rancher 的界面上绑定k8s集群)
[3.4、在 Rancher 上部署应用](#3.4、在 Rancher 上部署应用)
一、概述
Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。
Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,自动创建节点并安装 Kubernetes 集群,或者导入任何已经存在的 Kubernetes 集群。
Rancher 通过支持集群的身份验证和基于角色的访问控制(RBAC),使系统管理员能够从一个位置控制全部集群的访问。Rancher 可以对集群及其资源进行详细的监控和并在需要时发送告警,也可以将容器日志发送给外部日志系统,并通过应用商店与 Helm 集成。如果您具有外部 CI/CD 流水线系统,则可以将其与 Rancher 对接,如果没有,Rancher 也提供了简单易用的流水线来帮助您自动部署和升级工作负载。除此之外,Rancher 还有很多开箱即用的功能来帮助您更好的管理集群和业务应用,例如多集群应用,全局 DNS,服务网格,安全扫描,集群模版和基于 OPA 的策略管理等功能。
总而言之,Rancher 是一个全栈式的 Kubernetes 容器管理平台,也是一个可以在任何地方都能成功运行 Kubernetes 的工具。
二、Rancher API Server 的功能
Rancher API Server 是基于嵌入式 Kubernetes API Server 和 ETCD 数据库建立的,它提供了以下功能:
2.1、授权和角色权限控制
- 用户管理: Rancher API server 除了管理用户在公司内部的使用的认证信息之外,还管理用户访问外部服务所需的认证信息,如登录活动目录或 GitHub 所需的账号密码。
- 授权: Rancher API server 负责管理权限控制策略 和 安全策略。
2.2、使用 Kubernetes 的功能
- 运行 Kubernetes 集群: Rancher API server 可以在已有节点上运行 Kubernetes 集群 ,或对 Kubernetes 进行版本升级。
- 应用商店管理: Rancher 可以使用Helm Charts 应用商店重复部署应用。
- 项目管理: 项目,是 Rancher 中的一个概念,Kubernetes 中并没有这个概念。项目由一个集群内的多个命名空间和多个访问控制策略组成,允许用户以组为单位,一次管理多个命名空间,对其进行 Kubernetes 相关操作。Rancher 用户界面提供了 项目管理 和 项目内应用管理 两个功能。
- 流水线: 流水线 可以帮助开发者快速高效地上线新软件。Rancher 支持给每一个项目单独配置流水线。
- Istio: Rancher 与 Istio 集成,管理员或集群所有者可以将 Istio 交给开发者,然后开发者使用 Istio 执行安全策略,排查问题,或为快速发布、灰度发布和 A/B 测试进行流量控制。
2.3、配置云端基础信息
- 同步节点信息: Rancher API server 可以同步集群内所有节点的信息。
- 配置云端基础信息: 当 Rancher 与云服务提供商配置完了之后,可以在云端动态配置新节点和持久化存储。
2.4、查看集群信息
- 日志: Rancher 可以跟多种主流日志工具集成,您可以设置 Rancher 日志。
- 监控: 使用 Rancher,您可以通过 Prometheus 监控集群节点、Kubernetes 组件、软件部署的状态和进度。您可以设置 集群监控 或 项目监控。
- 告警信息: 您需要随时知道集群和项目的计划和非计划事件,才可以提高公司的运行效率。
三、Rancher 安装
3.1、前置环境
我们需要事先安装好Kubernetes集群,如果还没搭建k8s集群的话,可以参考前面使用kubeadm搭建k8s集群的文章:
3.2、通过 Docker 来进行安装Rancher
这里我们选择在master节点上(10.0.91.200)安装Rancher:
bash
$ docker run --privileged -d --name rancher --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher rancher/rancher:v2.5.11
Unable to find image 'rancher/rancher:v2.5.11' locally
v2.5.11: Pulling from rancher/rancher
284055322776: Pull complete
19763da17d52: Pull complete
dcba38686409: Pull complete
e29446e69556: Pull complete
e0edee3cdc12: Pull complete
6daa78a2ec74: Pull complete
e3a3c6bc780d: Pull complete
6c4f773f88b6: Pull complete
c5e890fd9374: Pull complete
85ceb4a5a420: Pull complete
dfecfc72402d: Pull complete
c772cfbd0e5b: Pull complete
8c4865378f10: Pull complete
71cc47c5d0b5: Pull complete
457a5bbc46e0: Pull complete
01ed63f2c8ee: Pull complete
a7a970f5b9d3: Pull complete
Digest: sha256:e924341c2c1a60d3551729f87a7ba43b015e3c6bf11d1e41d1517dac2f76fc94
Status: Downloaded newer image for rancher/rancher:v2.5.11
a8c61b91aa1236e20910aa3530d0a3486658804d4c2337f70434e2a306ee9c5f
$ docker ps | grep rancher
a8c61b91aa12 rancher/rancher:v2.5.11 "entrypoint.sh" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp rancher
- --privileged:可以使我们启动的容器用 root 的方式启动(在 Rancher 2.5 版本以上需要加)
- --restart:重启策略,我们配置的是 unless-stopped,表示当容器退出时,便会重新启动容器(除非容器之前就处于停止)
3.3、在 Rancher 的界面上绑定k8s集群
我们看到rancher的容器已经运行成功,接着我们在浏览器访问:https://10.0.91.200。
Rancher的默认用户名是admin,我们首先需要为admin设置密码。
点击Continue,进入Rancher启动页:
接下来需要配置 Kubernetes 集群:
点击Add Cluster,
这里我们选择Other Cluster类型:
点击Create创建k8s集群。
这里有三种方式,因为我们使用的是自定义的k8s集群,所以使用第三种方式,将上述红框内的命令,复制到k8s集群中master节点上(10.0.91.200)执行。
bash
[root@master ~]# curl --insecure -sfL https://10.0.91.200/v3/import/l5r9r2pztdqfmdqgmgrdxbl9w7htwslxxmk5vqz8j9fzqq69nw6ddr_c-ntshf.yaml | kubectl apply -f -
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-f206fee created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
deployment.apps/cattle-cluster-agent created
[root@master ~]# kubectl get pod -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-665b5f4b99-8xdvg 1/1 Running 0 2m27s
执行完之后,可以看到,它创建了一些集群角色、命令空间、Secret、Deployment等对象。
我们再次回到Rancher集群页面,可以看到,kubernetes这个集群已经成功创建出来了,并且状态也是Active。
点击Explorer,这是Rancher提供给我们的仪表盘,可以监控集群的一些资源使用情况。
3.4、在 Rancher 上部署应用
点击Create创建工作负载,根据需要填写具体的信息:
点击Create创建Deployment。稍等一会后,可以看到,nginx这个工作负载状态已经变成Active了,并且也成功创建了两个nginx的副本。
验证nginx是否正常访问,因为我们使用的NodePort方式暴露nginx服务,所以我们可以使用集群中任何一台节点的【IP地址:30090】访问到nginx。
可以看到,成功访问到nginx,以上就是通过Rancher整合自定义的k8s集群,实现通过界面管理k8s集群,方便了许多。
更多关于Rancher的使用,请参照Rancher官方文档:Rancher文档 | K8S文档 | Rancher | Rancher文档