本文來自Rancher Labsgit
關注咱們,看K8S乾貨教程github
做者簡介docker
張智博,Rancher中國研發與產品總監。7年雲計算領域經驗,一直活躍在研發一線,經歷了OpenStack到Kubernetes的技術變革,不管底層操做系統Linux,仍是虛擬化KVM或是Docker容器技術都有豐富的研發和實踐經驗。
自Rancher 2.0系列版本問世,以其簡單務實的UI風格和成熟穩健的後端架構贏得了市場的廣泛青睞。Kubernetes自己架構和功能逐漸穩定,同時擁有豐富經驗的Kubernetes技術人員也在不斷增長,根據市場出現的這些新變化,咱們近期發佈的Rancher 2.5對此作出了諸多改變。本文將從API和Dashboard兩個角度來探討Rancher 2.5的變化。
後端Kubernetes Native API
Rancher 2.5以前的版本中,咱們對原生的Kubernetes API作了一些封裝,以便適應咱們的UI展現需求。這些封裝的好處就是,咱們能夠定義適用自身的數據結構,而且提供了一套能夠單獨交互的API-UI,用戶可使用它來模擬調用API。一般在Rancher UI的不少入口中,點擊「View API」或者在瀏覽器中訪問「https://<server-url>/v3」便可查看訪問。這些API自己基於Kubernetes CRD實現,封裝後造成了Rancher風格API。至於如何定義Rancher風格API,能夠訪問此連接查看:api
https://github.com/rancher/api-spec 瀏覽器
固然,這種作法的劣勢顯而易見,從Rancher工程師和社區用戶的使用經驗看,主要有如下幾點:數據結構
擴展Rancher API很是複雜,只有深刻閱讀Rancher代碼或者接受了必定培訓的開發人員才能作到。架構
Kubernetes API在不斷演變,Rancher API去兼容多個版本的Kubernetes API變得愈來愈困難。框架
對於這些問題,咱們在Rancher 2.4已經開始嘗試作一些改變,細心的小夥伴可能發現了Rancher 2.4的新型Dashboard,它背後使用的就是新風格的Rancher API。這套API的實現依靠一個相對獨立的組件steve,爲了解決以前的API問題,steve作了如下改善工做:
less
徹底沿用Rancher的API-UI模式,不破壞用戶的使用習慣。
兼容Kubernetes Native API,包括原生對象和CRD,最大程度保留其數據字段。
Steve是一個較爲獨立的組件,即便離開Rancher也依然可以獨立運行。若是想要在二次開發Kubernetes,可是以爲原生API不友善,徹底能夠在上面啓用Steve風格的API。筆者作了一個小實驗,部署k3s並獨立安裝steve,能夠很是方便獲得一個友好的API。
k3s安裝過程較爲簡單直接略過,steve的編譯直接參考Makefile/Dockerfile便可。成功編譯後,會在本地生成一個steve:latest
的鏡像,而後使用docker run -itd --net=host -v ${HOME}/.kube:/root/.kube steve:latest
啓動steve,咱們就可以得到一個Kubernetes Native的Rancher API。訪問「https://<ip>:9443/v1」能夠查看效果:
現在Kubernetes生態中,可接入的擴展組件愈來愈多,每每咱們會在Kubernetes中安裝Prometheus、Istio、ArgoCD等各類程序,這些程序基本都會經過CRD來加強本身的服務能力。這就致使了集羣中存在大量的CRD,而且愈來愈難以管理,因而不少經驗豐富的高級技術人員開始指望CRD的可視化管理,以免Kubectl CLI操做的繁瑣。從這個需求出發,Rancher 2.5中集成的新Dashboard也更加Kubernetes Native化。
這一切都源於Steve API的能力,可讓咱們很是方便地間接使用Kubernetes API。在Rancher 2.4中,咱們已經提供了這個功能的實驗版,相信不少用戶都已經試用。在Rancher 2.5中,這部分功能將會正式提供,這對於管理單個Kubernetes集羣的高級技術人員將會很是友好。
新的Dashboard能夠對Kubernetes原生資源和CRD擴展資源都進行可視化管理,在諸如Kubernetes原生資源的建立等表單上也會提供全面的參數設置,比Rancher 2.4時代的實驗性Dashboard更加成熟。總體的頁面風格也更加傾向簡潔,對於熟練使用Kubernetes的開發的人員會很是方便,同時也採用了Vue框架編寫,這對於國內用戶作二次開發也是一個大利好。
在Rancher 2.5中能夠繼續使用docker run
方式試用體驗,與先前不一樣的是須要增長privileged參數:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher:v2.5.1
啓動完成後,首次進入登陸頁,除了配置初始化密碼外,還要設置默認視圖。兩個視圖分別是:多集羣管理和單集羣管理,前者沿用Rancher2.4 UI並作加強,後者就是前文介紹的Kubernetes Native Dashboard。對於Native Dashboard,因爲啓動時增長了privileged提權參數
,因此能夠在容器中啓動一個完整的local集羣,原先docker run
方式只能啓動的是kube-api,並不是一個完整集羣,如今經過新的Dashboard則能夠完整管理它,在local集羣上新建workload,固然咱們相信你只會在開發測試時如此使用。
總的來講,指望單一集羣管理的用戶,相比以前會節省不少部署資源。而指望使用多集羣管理的用戶,Rancher 2.5依然會保留訪問入口,同時多集羣管理的核心功能也將會有重大的提高,Rancher 2.5總體架構也更加靈活,將會很是方便用戶進行模塊化的擴展,這些內容咱們在後續的文章中逐步交流。