Go-Kubernetes-Client-go编程从Pod管理到CRD开发文章导语Client-go是Kubernetes官方的Go客户端库用于与K8s API Server交互。本文深入Client-go的核心组件Informer、WorkQueue、Lister实现从基础CRUD到自定义Controller。一、Client-go基础操作funcNewClientSet()(*kubernetes.Clientset,error){config,err:clientcmd.BuildConfigFromFlags(,kubeconfig)iferr!nil{returnnil,err}returnkubernetes.NewForConfig(config)}// List PodsfuncListPods(clientset*kubernetes.Clientset,namespacestring){pods,err:clientset.CoreV1().Pods(namespace).List(context.TODO(),metav1.ListOptions{})for_,pod:rangepods.Items{fmt.Printf(Pod: %s, Status: %s\n,pod.Name,pod.Status.Phase)}}二、Informer机制funcWatchPods(clientset*kubernetes.Clientset){factory:informers.NewSharedInformerFactory(clientset,30*time.Second)podInformer:factory.Core().V1().Pods()podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{AddFunc:func(objinterface{}){pod:obj.(*corev1.Pod)fmt.Printf(Pod Added: %s\n,pod.Name)},UpdateFunc:func(oldObj,newObjinterface{}){fmt.Println(Pod Updated)},DeleteFunc:func(objinterface{}){fmt.Println(Pod Deleted)},})stopCh:make(chanstruct{})deferclose(stopCh)factory.Start(stopCh)factory.WaitForCacheSync(stopCh)-stopCh}三、全文总结Client-go是K8s生态的核心Go库Informer实现本地缓存事件通知WorkQueue限流去重处理事件CRDController扩展K8s能力参考文献Client-go官方文档K8s Sample ControllerKubebuilder框架文档