我们使用client-go时一般会先创建Clientset客户端,Clientset中为每种内置资源类型(如 deployment、pod、service ...)都提供了struct和常用的方法函数,这让使用者能十分方便的操作(create、delete、list ...)内置类型对象。 但如果要操作的是CRD,client-go包中不可能知道用户自定义的CRD结构,显然就用不上Clientset了...
func getCrontab(client dynamic.Interface, namespace string, name string) (*Crontab, error) {result, err := client.Resource(gvr).Namespace(namespace).Get(context.TODO(),name,metaV1.GetOptions{}); if err != nil { return nil, err } data , err := result.MarshalJSON(); if err != n...
DynamicClient是一种动态客户端,它可以对任意Kubernetes资源进行RESTful操作,包括CRD自定义资源。DynamicClient与ClientSet操作类似,同样封装了RESTClient,同样提供了Create、Update、Delete、Get、List、Watch、Patch等方法。DynamicClient与ClientSet最大的不同之处是,ClientSet仅能访问Kubernetes自带的资源(即客户端集合内的资...
您可能会问:pod是kubernetes的内置资源,更适合Clientset来操作,而dynamicClient更适合处理CRD不是么?---您说得没错,这里用pod是因为折腾CRD太麻烦了,定义好了还要在kubernetes上发布,于是干脆用pod来代替CRD,反正dynamicClient都能处理,咱们通过实战掌握dynamicClient的用法就行了,以后遇到各种资源都能处理之; 源码下载...
DynamicClient:动态客户端,可以对任意的 Kubernetes 资源执行通用操作,包括 CRD。
本文是《client-go实战》系列的第四篇,前文咱们学习了Clientset客户端,发现Clientset在deployment、service这些kubernetes内置资源的时候是很方便的,每个资源都有其专属的方法,配合官方API文档和数据结构定义,开发起来比Restclient高效; 但如果要处理的不是kubernetes的内置资源呢?比如CRD,Clientset的代码中可没有用户自定...
调用clientset.CoreV1().Pods(apiv1.NamespaceDefault)返回PodInterface接口,后续操作如删除、创建等皆通过restclient客户端实现。DynamicClient则是一种动态客户端,可对任意Kubernetes资源进行RESTful操作,包括CRD自定义资源。与ClientSet操作类似,它同样封装了RESTClient,并提供创建、更新、删除、获取、...
DynamicClient 是一种动态客户端,通过动态指定资源组、资源版本和资源等信息,它可以操作任意的 Kubernetes...
这个项目中被最广泛使用客户端是ClientSet,它是交互客户端的类型之一。这意味着这个接口给kubernetes的每种资源都提供了可用的扩展方法和操作,这也就是为什么但凡要实现扩展,我们首先就应该考虑这种标准操作kubernetes内置接口的方式。 但是这也肯定不能满足全部场景,很多情况下我们要自己声明CRD(Custom Resources Definition...
本文是《client-go实战》系列的第四篇,前文咱们学习了Clientset客户端,发现Clientset在deployment、service这些kubernetes内置资源的时候是很方便的,每个资源都有其专属的方法,配合官方API文档和数据结构定义,开发起来比Restclient高效; 但如果要处理的不是kubernetes的内置资源呢?比如CRD,Clientset的代码中可没有用户自定...