client-go
2021-04-14 10:09:07 40 举报
AI智能生成
k8s clien-go 关键代码梳理
作者其他创作
大纲/内容
client-go
informers每种k8s资源的informer实现
infomer保证了k8s不适用中间件的情况下的实时性、可靠性、顺序性
SharedInformerFactory
包括所有的资源分组接口,资源分组又按照版本、资源的层级找到Informer
NewSharedInformerFactory()
core
interface.go
定义了core这个分组下所有的版本
v1
Interface定义了core/v1下所有资源的 Informer
PodInformer
ServiceInformer
...
...按照 group/version/resource 的层级结构组织 Informer
internalinterfaces
listers每种k8s资源提供Lister方法
kubernetes提供ClientSet访问k8s
clientset.go
ClientSet
corev1.CoreV1Client
appsv1.AppsV1Client
NewForConfig()
初始化ClientSet
typed
对每种资源都封装了RESTClient接口,便于外部直接调用
scheme
register.go
runtime.SchemeBuilder方法调用 api 这个库暴露的所有资源的 AddScheme方法注册所有资源
rest提供RESTClient访问k8s
client.go
RESTClient
RESTClientFor()
dynamicDynamicClient动态客户端
传入GVK,调用RESTClient请求k8s资源,返回Unstructured数据
discoveryDiscoveryClient发现客户端
DiscoveryClient用于发现k8s支持的资源组、资源版本、资源信息
NewDiscoveryClientForConfig()
ServerGroupsAndResources()返回所有的资源信息
请求 /api,数据存放在 APIVersions 中
请求 /apis,数据存放在 APIGroupList 中
tools
clientcmd
BuildConfigFromFlags()
cache
SharedIndexInformer
AddEventHandler()
Run()
0 条评论
下一页