我对 kubernetes 的 golang API 有一些疑问。
我应该使用哪一个? k8s.io/client-go 还是 k8s.io/kubernetes/pkg/client?有什么区别?
我想获取所有 pod 的列表,然后监听添加/更新/删除事件,使用 api.Pods("").Watch 方法和使用 informer 有什么区别?
我在集群内部使用 API,如何获取我当前所在节点的名称?它只是机器的主机名吗?
最佳答案
which one should I use? k8s.io/client-go or k8s.io/kubernetes/pkg/client?
使用k8s.io/client-go
。
what's the difference between using the api.Pods("").Watch method and using an informer?
Informer本质上是一个共享缓存,减少了API服务器的负载。除非您正在做一些微不足道的事情,否则这是首选方式。
how can I fetch the name of the node I'm currently in?
使用k8s.io/api/core/v1.Node ,例如参见 this code .
顺便说一句,我和我的同事上周在英国 GopherCon 举办了一个关于这个主题的研讨会(使用 Kube API 和 Go)——可能是 slide deck和 repo对你有用;另外,网上有一个配套Katacoda scenario你可以用来玩。
关于go - Kubernetes 围棋 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51687798/