如果我有可以使用选择器查询的服务、pod 等更改其 ip 地址,有没有办法获得通知?
例如,假设我的应用程序需要一个 pod 的 IP 地址列表,或者一个服务的 IP 地址。由于容器可以关闭并使用 kubernetes 重新创建,有没有办法在容器关闭并重新创建时收到通知,以便我可以使用 kubernetes API 获取 IP 地址的最新值?
这对于主数据库和从数据库等是必需的。
kubernetes 是否具有可用于通知我的应用程序的 webhook 类型功能?
如果我有可以使用选择器查询的服务、pod 等更改其 ip 地址,有没有办法获得通知?
例如,假设我的应用程序需要一个 pod 的 IP 地址列表,或者一个服务的 IP 地址。由于容器可以关闭并使用 kubernetes 重新创建,有没有办法在容器关闭并重新创建时收到通知,以便我可以使用 kubernetes API 获取 IP 地址的最新值?
这对于主数据库和从数据库等是必需的。
kubernetes 是否具有可用于通知我的应用程序的 webhook 类型功能?
您可以使用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 集群 ETCD 存储中资源更改的通知。Kubernetes 中的端点控制器就是一个例子,因为它会Endpoints在服务背后的 pod 的 IP 发生变化时更新对象。
另一个例子是入口控制器,它监视端点中的任何变化,端点将 Pod IP 保存在服务后面。
标准 kubernetes 客户端库中的 watch API 非常高效且被广泛使用。
您是否有理由需要获取 Pod 的 IP,而不是部署 StatefulSet 并使用稳定的 SRV 记录?
StatefulSet 看起来是获得稳定身份的更好方法。主从拓扑是 StatefulSet 的典型用例。
https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/