使用 Go 客户端观看 Kubernetes 服务事件
问题:
如何监听和接收使用 client-go 在 Kubernetes 中创建、删除或更新服务时发出通知库?
解决方案:
Informer 和 ListWatch
要观看服务事件,我们可以使用来自客户端库。监视列表允许我们创建一个监视程序来监视指定的资源,而通知程序则提供了处理监视过程的更高级别的接口。
以下是如何使用 client-go 监视服务事件:
package main import ( "fmt" "flag" "time" k8sclient "k8s.io/client-go/kubernetes" corev1 "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/cache" "k8s.io/client-go/pkg/fields" ) func main() { var kubeconfig = flag.String("kubeconfig", "./config", "path to the kubeconfig file") flag.Parse() config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { panic(err.Error()) } clientset, err := k8sclient.NewForConfig(config) if err != nil { panic(err.Error()) } watchlist := cache.NewListWatchFromClient(clientset.Core().RESTClient(), "services", corev1.NamespaceDefault, fields.Everything()) _, controller := cache.NewInformer( watchlist, &corev1.Service{}, time.Second * 0, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { fmt.Printf("Service added: %v\n", obj) }, DeleteFunc: func(obj interface{}) { fmt.Printf("Service deleted: %v\n", obj) }, UpdateFunc: func(oldObj, newObj interface{}) { fmt.Printf("Service updated: %v\n", oldObj) }, }, ) stop := make(chan struct{}) go controller.Run(stop) for { time.Sleep(time.Second) } }
说明:
我们首先使用 NewListWatchFromClient 创建监视列表,指定资源类型(服务)、命名空间(默认)和字段选择器(所有内容)。然后,我们使用 NewInformer 创建一个通知程序,并提供一个事件处理程序列表来处理不同的事件(添加、删除、更新)。在事件处理程序中,当添加、删除或更新服务时,我们会打印相应的消息。最后,我们通过在 goroutine 中运行控制器来启动手表。此代码将持续监控服务事件并打印任何更改的详细信息。
以上是如何使用Go客户端监控Kubernetes服务事件?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文演示了创建模拟和存根进行单元测试。 它强调使用接口,提供模拟实现的示例,并讨论最佳实践,例如保持模拟集中并使用断言库。 文章

本文探讨了GO的仿制药自定义类型约束。 它详细介绍了界面如何定义通用功能的最低类型要求,从而改善了类型的安全性和代码可重复使用性。 本文还讨论了局限性和最佳实践

本文讨论了GO的反思软件包,用于运行时操作代码,对序列化,通用编程等有益。它警告性能成本,例如较慢的执行和更高的内存使用,建议明智的使用和最佳

本文使用跟踪工具探讨了GO应用程序执行流。 它讨论了手册和自动仪器技术,比较诸如Jaeger,Zipkin和Opentelemetry之类的工具,并突出显示有效的数据可视化

本文讨论了GO中使用表驱动的测试,该方法使用测试用例表来测试具有多个输入和结果的功能。它突出了诸如提高的可读性,降低重复,可伸缩性,一致性和A

本文讨论了通过go.mod,涵盖规范,更新和冲突解决方案管理GO模块依赖关系。它强调了最佳实践,例如语义版本控制和定期更新。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。