若解码成功,返回结构体metav1.APIResourceList内容;若解码不成功,继续下面的语句,即d.delegate.ServerResourcesForGroupVersion(groupVersion),这里特别的地方是,结构体属性delegate,中文意思是委托,因为使用接口DiscoveryInterface的CachedDiscoveryClient中的ServerResourcesForGroupVersion去读取缓存失败了,需要去kubernetes API...
从名称CachedDiscoveryInterface来看,kubectl对GVR数据是做了本地缓存的,想想也是,GVR不经常变化,没必要每次都去API Server拉取,关于缓存的细节请参考:staging/src/http://k8s.io/client-go/discovery/cached/disk/cached_discovery.go,这里就不展开了; 至此,client-go的四种客户端工具实战以及相关源码的浅层次分析就...
该方法的代码分析参考 client-go 源码分析(1) - discovery模块:discoveryclient获取所有的gv和gvr 用下面的构造方法构造CachedDiscoveryClient结构体的时候,将属性delegate赋值给实现了接口的discovery.DiscoveryInterface的DiscoveryClient结构体即可实现上面的多态或者形象说是委托行为。 func newCachedDiscoveryClient(delegate ...
packagemainimport("fmt""k8s.io/apimachinery/pkg/runtime/schema""k8s.io/client-go/discovery""k8s.io/client-go/tools/clientcmd")funcmain(){// 加载配置文件,生成 config 对象config, err := clientcmd.BuildConfigFromFlags("","./kubeconfig")iferr !=nil{panic(err.Error()) }// 实例化 Discove...
discovery:通过Kubernetes API 进行服务发现 dynamic:对任意Kubernetes对象执行通用操作的动态client transport:启动连接和鉴权auth tools/cache:controllers控制器 Client结构 RESTClient:RESTClient是最基础的,相当于的底层基础结构,可以直接通过 是RESTClient提供的RESTful方法如Get(),Put(),Post(),Delete()进行交互 ...
kubernetes本地缓存地址.kube/cache/discovery/master_ip_port/NewCachedDiscoveryClientForConfig创建一个客户端ServerGroupsAndResource获取数据并缓存。从缓存文件中找,有直接返回,没有调用APIServer获取GVR数据,将获取到的数据缓存到本地,返回给客户端Informer 架构图 informer负责与Kubernetes APIServer进行Watch操作。资源...
package main import ( "flag" "fmt" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/discovery" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" "path/filepath" ) func main() { var kubeconfig *string // home是家目录,如果能取得家目录的值,就可以用来做...
discovery:提供DiscoveryClient发现客户端 dynamic:提供DynamicClient动态客户端 informers:每种 kubernetes 资源的 Informer 实现 kubernetes:提供ClientSet客户端 listers:为每一个 Kubernetes 资源提供 Lister 功能,该功能对 Get 和 List 请求提供只读的缓存数据 ...
◆ fake_discovery_client用于模拟测试 fake_discovery_client.go文件在K8s的client-go项目中扮演着模拟测试中Fake Discovery客户端的角色。用于模拟环境的客户端,方便测试与功能模拟。◆ 认证插件提供者 client-go/plugin/pkg/client/auth/plugins_providers.go文件是client-go项目的重要组成部分,为不同身份认证需求提供...
"k8s.io/client-go/discovery" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" klog"k8s.io/klog/v2" ) funcaddListWatchCfgAndClient(stopCh <-chanstruct{}){ cfg1, err := clientcmd.BuildConfigFromFlags("","/root/.kube/config") ...