目录
一、概述
二、Rancher API Server 的功能
2.1、授权和角色权限控制
2.2、使用 Kubernetes 的功能
2.3、配置云端基础信息
2.4、查看集群信息
三、Rancher 安装
3.1、前置环境
3.2、通过 Docker 来进行安装Rancher
3.3、在 Rancher 的界面上绑定k8s集群
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:
$ 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)执行。
[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文档