2

如果我有可以使用选择器查询的服务、pod 等更改其 ip 地址,有没有办法获得通知?

例如,假设我的应用程序需要一个 pod 的 IP 地址列表,或者一个服务的 IP 地址。由于容器可以关闭并使用 kubernetes 重新创建,有没有办法在容器关闭并重新创建时收到通知,以便我可以使用 kubernetes API 获取 IP 地址的最新值?

这对于主数据库和从数据库等是必需的。

kubernetes 是否具有可用于通知我的应用程序的 webhook 类型功能?

4

3 回答 3

4

您可以使用watch API 操作。

要查看所有 Endpoints 对象:

GET /api/v1/namespaces/{namespace}/endpoints?watch=true

要查看特定的 Endpoints 对象:

GET /api/v1/watch/namespaces/{namespace}/endpoints/{name}?watch=true

这会创建一个挂起的 HTTP GET 请求,并且只要任何被监视的对象发生更改,您就会收到通知。

请参阅Kubernetes API 参考

于 2020-06-10T15:01:14.980 回答
1

没有什么是开箱即用的。您必须编写一个控制器,该控制器可以监视并收到有关 kubernetes 集群 ETCD 存储中资源更改的通知。Kubernetes 中的端点控制器就是一个例子,因为它会Endpoints在服务背后的 pod 的 IP 发生变化时更新对象。

另一个例子是入口控制器,它监视端点中的任何变化,端点将 Pod IP 保存在服务后面。

标准 kubernetes 客户端库中的 watch API 非常高效且被广泛使用。

于 2020-06-10T14:44:20.487 回答
0

您是否有理由需要获取 Pod 的 IP,而不是部署 StatefulSet 并使用稳定的 SRV 记录?

StatefulSet 看起来是获得稳定身份的更好方法。主从拓扑是 StatefulSet 的典型用例。

https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/

于 2020-12-06T22:09:05.197 回答