Client-go是kubernetes官方發佈的調用K8S API的golang語言包,能夠用來開發K8S的管理服務、監控服務,配合前端展現,就能夠開發出一款定製化的、可視化的管理或監控工具。目前最新版本爲7.0,對應K8S的版本爲1.10,訪問連接:https://github.com/kubernetes/client-go
其中client-go與K8S版本對應關係爲:前端
因爲目前咱們測試環境的K8S集羣版本爲1.5.2,因此此處咱們使用client-go2.0版本。python
能夠直接使用go語言第三方包管理工具下載client-go,或者使用go語言自帶的管理工具下載,須要特別注意的是,client-go包與k8s版本號有必定的對應關係,必定要選擇下載與目標k8s版本對應的版本號。下載方式爲:git
$ go get github.com/kubernetes/client-go
或者,也能夠本身手動去github下載下面的幾個包:github
而後將它們放在$GOPATH下面的src文件夾中對應的文件夾下。例如:github.com/google/gofuzz,存放的目錄爲$GOPATH/src/github.com/google/gofuzz。
不過,須要特別注意的是,不知什麼緣由,網絡上面的教程下載的client-go包存放的位置都是$GOPATH/src/k8s.io/client-go。其實go代碼中引用的client-go包方式與client-go包在本地的存放位置有關,而該存放位置並無嚴格的控制,能夠隨意存放(若是是手動下載的話),因此此處咱們也將github.com/kubernetes/client-go存放位置修改成$GOPATH/src/k8s.io/client-go,以下圖:golang
因此此時在go代碼中引用client-go時的方式就變成了下面這樣:api
Client-go開發k8s有兩種方式,一種是in cluster模式,另外一種是out of cluster模式,至於兩者的區別,大體來看能夠認爲咱們開發的go服務是否放在K8S集羣內運行,在集羣內運行則爲in cluster模式,不然爲out of cluster模式。此處咱們這次採用的是out of cluster模式。
咱們的項目名稱爲k8smanage,該項目下主要的文件爲兩個:main.go和config.yaml。其中,main.go中爲咱們訪問k8s的主要代碼,而config.yaml中保存了目標k8s集羣的鏈接信息。其中,main.go中代碼截圖以下所示:網絡
而config.yaml中的內容以下所示:工具
那麼對於一個新的k8s集羣來講,咱們應該如何編寫config.yaml文件中的內容呢?其實比較簡單,在k8s集羣的master上經過指令「kubectl config view」獲取的信息就是咱們config.yaml中的內容:測試
不過,爲了直接經過config.yaml文件就能獲取目標k8s集羣的鏈接信息,咱們沒有直接使用空的clusters字段值,而是補充了裏面的server字段信息,server字段值爲k8s master節點上apiServer的訪問地址。
到此,config.yaml文件中的配置信息就配置完成了。經過main.go中開頭的代碼部分就能夠正常訪問k8s集羣了。google
python-k8sclient貌似是OpenStack維護的調用K8S API的python語言包,能夠用來開發K8S的管理服務、監控服務,配合前端展現,就能夠開發出一款定製化的、可視化的管理或監控工具。目前其最新版本爲0.4.0,下載連接:https://pypi.org/project/python-k8sclient/
k8sclient開發比較簡單,只須要提供K8S master的訪問地址便可,若是設置了訪問帳號密碼,那麼還須要提供它們。我這裏的K8S集羣未設置任何權限認證功能,因此能夠直接經過URL訪問,部分示例代碼以下:
至於其餘的開發,主要是調用k8sclient包的接口,主要功能接口能夠參看k8sclient源碼,部分接口功能以下:
地址:https://github.com/kubernetes-client/python