當前位置:編程學習大全網 - 源碼下載 - client-go 源碼分析

client-go 源碼分析

client-go是壹個調用kubernetes集群資源對象API的客戶端,即通過client-go實現對kubernetes集群中資源對象(包括deployment、service、ingress、replicaSet、pod、namespace、node等)的增刪改查等操作。大部分對kubernetes進行前置API封裝的二次開發都通過client-go這個第三方包來實現。

?client-go官方文檔: /kubernetes/client-go

client-go庫版本

獲取kubernetes配置文件kubeconfig的絕對路徑。壹般路徑為$HOME/.kube/config。該文件主要用來配置本地連接的kubernetes集群。config配置文件支持集群內和集群外訪問方式。(只要在網絡策略訪問範圍內)

config文件形式如下所示:

通過參數(master的url或者kubeconfig路徑)用BuildConfigFromFlags方法來獲取rest.Config對象,壹般是通過參數kubeconfig的路徑。

通過config對象為入參,調用NewForConfig函數獲取clients對象,clients是多個client的集合。裏面包含著各個版本的client。源碼地址:k8s.io/client-go/kubernetes/clientset.go

NewForConfig函數根據傳入的rest.config對象創建壹個Clientset對象,此對象可以操作CoreV1()方法。

其結構體具體參數如下所示:

Clientset結構體實現了以上結構定義的所有方法。源碼地址:k8s.io/client-go/kubernetes/clientset.go

因為Clientset可使用其中任意函數調用,如獲取Pod列表。

在創建Clientset對象時,Clientset 中的變量coreV1也被壹起初始化創建。即創建了CoreV1Client對象。

如下所示:

CoreV1Interface中包含了各種kubernetes對象的調用接口,例如PodsGetter是對kubernetes中pod對象增刪改查操作的接口。ServicesGetter是對service對象的操作的接口。

CoreV1Client結構體實現了CoreV1Interface所有的定義函數。

PodsGetter接口中定義了Pods方法此方法返回PodInterface,這樣就可以用Clients.Corev1().Pods()方法對Pod進行增刪改查操作了。

調用Pods方法,再通過newPods函數創建壹個Pods的對象。pods對象繼承了rest.Interface接口,即最終的實現本質是RESTClient的HTTP調用。

PodInterface接口定義了Pod對象操作的所有方法。

Pod對象中繼承了rest.Interface,上面提到過此client便是進行es資源對象的調用操作,需要先獲取kubernetes的配置信息,即$HOME/.kube/config。(master節點)

具體流程如下圖所示:

  • 上一篇:竹蒿鬥菜刀在臺灣語言中是什麽意思?
  • 下一篇:手機兼職平臺正規app有哪些
  • copyright 2024編程學習大全網