整体来讲,Rancher和k8s都是用来做为容器的调度与编排系统。可是rancher不只可以管理应用容器,更重要的一点是可以管理k8s集群。Rancher2.x底层基于k8s调度引擎,经过Rancher的封装,用户能够在不熟悉k8s概念的状况下轻松的经过Rancher来部署容器到k8s集群当中。web
为实现上述的功能,Rancher自身提供了一套完整的用于管理k8s的组件,包括Rancher API Server, Cluster Controller, Cluster Agent, Node Agent等等。组件相互协做使得Rancher可以掌控每一个k8s集群,从而将多集群的管理和使用整合在统一的Rancher平台中。Rancher加强了一些k8s的功能,并提供了面向用户友好的使用方式。docker
用户能够经过不少种方式搭建一个k8s集群,能够是在本地机器上手动搭建,能够在公有云厂商的服务器上手动搭建,也能够直接使用公有云厂商的k8s集成服务。Rancher可以将全部部署在不一样地点,经过不一样方式搭建的k8s集群统一管理起来。Rancher经过不一样的插件和驱动适配了不一样场景的k8s集群。 对于用户而言,它们无需关心底层k8s的实现细节,统一经过Rancher UI或Rancher API就能够在不一样的k8s集群里部署应用。服务器
在k8s中,权限管理一般使用RBAC的模式。即用户或应用经过使用证书或ServiceAccount来代表身份,k8s经过检查对应的Role,ClusterRole来肯定访问者是否有对应的权限。可是全部的权限管理都仅仅限定在k8s内部,没法与第三方的认证管理系统集成。另外一方面,每个集群都是独立的一套权限管理,在用户有多集群的场景中,没有办法统一的规划多集群的权限管理。不过,k8s在设计之初就已经很明确的表示k8s将不会提供本身的帐号管理,这一点应该由外部组件本身实现。运维
Rancher经过Auth Proxy组件在k8s以外提供了统一的权限管理中心。Auth Proxy能够与第三方认证系统结合。通常状况下,用户经过Rancher提供的kubeconfig
认证文件访问的是Racher的Auth Proxy。Auth Proxy通过鉴权后将用户的请求设置对应的请求头,最后经过其余组件将请求转发到真正的k8s API Server。所以,对于用户的开发团队而言,能够直接经过现有的团队权限管理系统来对全部k8s集群的权限进行管理管理。但用户对集群的访问的延时可能由于代理这一步而上升。微服务
k8s经过提供大量的API实现了强大的容器编排功能。可是对于上层的应用开发者而言,掌握大量的概念并不容易,并且有不少对于开发并不关心的字段。在k8s中部署应用,一般会经过编写yaml
并执行kubectl create -f
来实现。这种基于命令行的使用方式并不友好,并且不易于修改,并且yaml
文件的编写要求用户掌握每个字段的合法值,这对于上层用户有很大的学习成本。但一旦掌握了k8s原生的API,用户就能够实现更多定制化的部署需求。学习
Rancher提供了统一的UI界面来部署应用,功能比k8s官方的UI更强大。了解k8s的用户在使用Rancher部署应用时就会发现的全部选项均可以在k8s的API中找到一一对应的字段。但Rancher对每一个选项有更友好易懂的描述,更切合上层开发的概念,所以用户即便不懂k8s也可以轻松部署应用。以Deployment为例,Rancher将应用部署时所需的配置进行了分类,划分为应用调度、健康检查、升级策略等模块,使得配置更简单。Rancher更多的面向的是与k8s无关的应用的部署场景,对于与那些与k8s紧密结合的应用,它们所需的一些k8s资源并不能彻底在Rancher中统一管理。好比部署本身开发的k8s operator所需的webhook配置,RBAC相关配置都须要用户自行导入yaml来实现部署。测试
Rancher也提供了应用商店的模式,用户能够在商店中浏览并一键部署所需的应用。优化
对于直接使用k8s原生系统的用户,集群运维复杂且费时。集群升级和集群备份都须要人工介入执行多条命令。好比k8s自身升级须要用户了解组件升级的相互依赖,etcd升级须要用户了解etcd的升级策略,并作好相关备份以防数据丢失。节点上线须要人工安装组件,执行命令。插件
基于Rancher的RKE构建的集群可以自行解决集群升级,集群备份的一些痛点,并提供了完善的回滚机制,减轻了运维的工做量。节点的上下线在Rancher中变得十分简单,一般只须要运行docker容器就完成了一系列自动化部署。命令行
原生k8s的集群监控,日志收集都依赖第三方的组件,好比Prometheus,fluentd。用户须要本身开发或部署来实现上述功能。
Rancher一样经过集成这些主流的第三方组件实现了集群的监控报警和日志收集,大幅简化了部署的流程。和对k8s概念的封装同样,Rancher也对这些第三方的组件的配置作了封装和优化。
Rancher将报警的配置进行了语义化的配置,涵盖了系统组件,工做负载,节点等经常使用资源,用户经过Rancher配置报警会比直接编写Prometheus的PromQL语言简单不少,节约学习成本。但也仅此而已,更复杂的报警规则没法直接经过Rancher配置。
最后,网易轻舟微服务基于Kubernetes等云原生技术栈,提供完整易用的解决方案,用户能够轻松部署、更新、测试以及治理其微服务应用,大大提高业务研发效率。