我們通過Fabric8調(diào)用k8s的功能接口俺夕,從而實現(xiàn)k8s的控制臺開發(fā)裳凸,雖然k8s以及提供了控制臺,但是本身的控制臺已經(jīng)不怎么更新劝贸,為了使用更方便姨谷,我們決定自己搭建控制臺并結(jié)合之前的項目完成一個疊加融合。
展示一下官方的控制臺:
廢話少說映九,我們來看看如何使用Fabric8梦湘。
要使用Fabric8我們就要調(diào)用其中的方法,找不到對應的方法在哪個類下是使用Fabric8的難題。這次我們就來解析一下我們Fabric8的那些方法藏在哪践叠。
1.首先要說一個很重要的對象----client
在每次操作集群前都需要先連接到k8s集群言缤,通過連接方法獲得的就是KubernetesClient接口下的client對象。之后的所有針對k8s集群的操作都無一例外地要傳入這個參數(shù)禁灼,所以KubernetesClient接口自然成為了我們一窺Fabric8源碼的突破口管挟。
可以看到,這個接口下定義了很多方法弄捕,如果細心一點僻孝,你會在其中發(fā)現(xiàn)很多熟悉的面孔。
比如:
NonNamespaceOperation< Namespace, NamespaceList, DoneableNamespace, Resource<Namespace, DoneableNamespace>> namespaces();
NonNamespaceOperation<Node, NodeList, DoneableNode, Resource<Node, DoneableNode>> nodes();
是不是方法名很熟悉守谓,就是k8s里基本的概念穿铆,命名空間和節(jié)點,后面還有pods斋荞、services這些荞雏。找到這些我們就有感覺大致方向沒問題了,然后我們繼續(xù)看這些方法的返回類型平酿。
2.發(fā)現(xiàn)操作的集合
可以看到他們的返回類型分為兩類凤优,一類是MixedOperation、一類是NonNamespaceOperation蜈彼,根據(jù)名稱我們猜測這兩個都是操作的集合筑辨,我們之后對pod、service的操作都應該是定義在這里面的幸逆。我們點進MixedOperation發(fā)現(xiàn)MixedOperation繼承了NonNamespaceOperation接口棍辕,這就有意思了,說明MixedOperation很可能包含的操作要多于NonNamespaceOperation还绘。這個時候我們已經(jīng)有了很多猜測楚昭,是到了證實一波的時候了,打開關系圖表蚕甥,我們可以看到MixedOperation和NonNamespaceOperation所有的繼承關系哪替。如下圖:
這樣一對比MixedOperation多了哪些功能是不是就一目了然了?
比如MixedOperation多繼承了Namespaceable接口菇怀,所以會多一個Namespaceable接口下定義的inNamespace方法,也就是說MixedOperation下的刪除查找可以根據(jù)namespace也就是命名空間來操作晌块,而NonNamespaceOperation下就沒有這個方法爱沟。再回顧一下這兩個操作集合的名字,是不是就明白了匆背,一個是可以根據(jù)命名空間操作的方法集呼伸,一個是不能根據(jù)命名空間操作的方法集。我們再去看看KubernetesClient下的哪些方法返回的是NonNamespaceOperation,是namespaces和nodes括享,這兩個當然不能根據(jù)命名空間進行操作搂根,所以是不是更加明白整個Fabric8的架構(gòu)了?
3.知道了去哪里找方法铃辖,還得之道去哪找操作對象吧
我們之前在KubernetesClient下找到了很多剩愧,但是這下面并不是全部呀,雖然pods娇斩、service仁卷、namespaces等等都有了,但像deployments就沒有呀犬第,這些在哪呢锦积?瞎找嗎?是的歉嗓,瞎找總是能找到的丰介,但是我們先不急著瞎找,我們先分析一波鉴分,說不定就能找到了呢哮幢?
還記不記得我們用yaml文件創(chuàng)建pod、service這些時候填的apiVersion冠场?
pod家浇、service、namespace這些的apiVersion是v1碴裙,而deployment和daemonSet的apiVersion是apps/v1钢悲,我們再看下里的方法,是不是有一個就很顯眼了舔株。
點進去它返回的接口莺琳,果不其然,我們的daemonSet和deployment就靜靜地躺在這里载慈。
相信通過帶領大家進行此次淺析惭等,大家對整個Fabric8的結(jié)構(gòu)都有了一定的了解,也對進一步該如何探索有了自己的理解办铡,剩下的就只能等大家自己進一步實踐了辞做。