整體來講,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等雲原生技術棧,提供完整易用的解決方案,用戶能夠輕鬆部署、更新、測試以及治理其微服務應用,大大提高業務研發效率。