← ClaudeAtlas

k8s-golisted

Kubernetes Go 开发专家 - 使用 client-go 编写 K8s 控制器、Operator、Informer、工作队列。适用:K8s API 交互、controller/operator 开发、CRD 操作、Pod 管理(exec/logs/port-forward)、资源 Watch 监听。不适用:仅需 kubectl 命令行操作(无需编码)、简单 YAML 部署(用 Helm/Kustomize)、非 Go 语言的 K8s 开发(用各语言 SDK)。触发词:kubernetes, k8s, client-go, controller, operator, informer, workqueue, pod, deployment, CRD, watch
omeyang/Thoth · ★ 0 · DevOps & Infrastructure · score 73
Install: claude install-skill omeyang/Thoth
# Kubernetes Go 开发专家 编写 Kubernetes 相关的 Go 代码:$ARGUMENTS ## client-go 基础 ### 创建客户端 ```go // 集群内运行(Pod 内) func inClusterClient() (*kubernetes.Clientset, error) // 集群外运行(使用 kubeconfig) func outOfClusterClient(kubeconfig string) (*kubernetes.Clientset, error) // 自动检测环境(推荐) func autoClient() (*kubernetes.Clientset, error) ``` > 完整实现见 [references/examples.md](references/examples.md#创建客户端) ### CRUD 操作 ```go // 创建 Pod client.CoreV1().Pods(ns).Create(ctx, pod, metav1.CreateOptions{}) // 读取 client.CoreV1().Pods(ns).Get(ctx, name, metav1.GetOptions{}) // 列表(带 label 过滤) client.CoreV1().Pods(ns).List(ctx, metav1.ListOptions{LabelSelector: "app=myapp"}) // 更新 client.CoreV1().Pods(ns).Update(ctx, pod, metav1.UpdateOptions{}) // 删除 client.CoreV1().Pods(ns).Delete(ctx, name, metav1.DeleteOptions{}) ``` > 完整实现见 [references/examples.md](references/examples.md#crud-操作) ## Watch 和 Informer ### 使用 Watch ```go func watchPods(ctx context.Context, client *kubernetes.Clientset, ns string) error ``` - 监听 Added / Modified / Deleted 事件 - 适合简单场景 ### 使用 SharedInformer(推荐) ```go factory := informers.NewSharedInformerFactory(client, 30*time.Second) podInformer := factory.Core().V1().Pods().Informer() podInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { ... }, UpdateFunc: func(oldObj, newObj interface{}) { ... }, DeleteFunc: func(obj interface{}) { ... }, // 注意处理 tombstone }) factory.Start(ctx.Done()) cache.WaitForCacheSync(ctx.Done(), podI