go - Kubernetes 围棋 API

标签 go kubernetes

我对 kubernetes 的 golang API 有一些疑问。

  1. 我应该使用哪一个? k8s.io/client-go 还是 k8s.io/kubernetes/pkg/client?有什么区别?

  2. 我想获取所有 pod 的列表,然后监听添加/更新/删除事件,使用 api.Pods("").Watch 方法和使用 informer 有什么区别?

  3. 我在集群内部使用 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 deckrepo对你有用;另外,网上有一个配套Katacoda scenario你可以用来玩。

关于go - Kubernetes 围棋 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51687798/

相关文章:

go - 向现有的http处理函数添加上下文

docker - 如何将 kubectl 日志保存到主机上的文件中?

kubernetes - 将 kubernetes pod 公开到互联网

variables - 为什么我可以在 for 循环中多次重新定义同一个变量,但不能在循环之外?

kubernetes - PHP 本地开发 - minikube 还是 docker-compose?

azure - 更新 SSL 证书后 AKS 上发生 CORS 错误

kubernetes - 分析 Kubernetes pod OOMKilled

go - 如何将 slice 元素传递给函数

go - 传递给Go的C引用无法识别typedef void *?

go - 有没有办法在 go 代码中找到未处理的错误?