rancher 和 Kubernetes有什麼區別?

網易雲發表於2020-04-16

總體來說,Rancher和k8s都是用來作為容器的排程與編排系統。但是rancher不僅能夠管理應用容器,更重要的一點是能夠管理k8s叢集。Rancher2.x底層基於k8s排程引擎,通過Rancher的封裝,使用者可以在不熟悉k8s概念的情況下輕鬆的通過Rancher來部署容器到k8s叢集當中。

為實現上述的功能,Rancher自身提供了一套完整的用於管理k8s的元件,包括Rancher API Server, Cluster Controller, Cluster Agent, Node Agent等等。元件相互協作使得Rancher能夠掌控每個k8s叢集,從而將多叢集的管理和使用整合在統一的Rancher平臺中。Rancher增強了一些k8s的功能,並提供了面向使用者友好的使用方式。

多叢集管理

使用者可以通過很多種方式搭建一個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等雲原生技術棧,提供完整易用的解決方案,使用者可以輕鬆部署、更新、測試以及治理其微服務應用,大大提升業務研發效率。

相關文章