如何通过特定名称过滤器收集Pod的所有IP

时间:2019-09-03 15:07:45

标签: docker kubernetes deployment devops pod

我有一些遗留应用程序,它们部署在集群环境中。当一个应用程序节点收到呼叫时,它会从某个配置文件中获取部署了该应用程序的所有应用程序节点的静态列表。

收集到所有IP后,它将通过jmx与每个应用程序节点通信。

当前目标是迁移到k8s ,因此在这种情况下,应用程序pod的列表是动态的,可以按原样存储。需要实现类似服务发现之类的东西。

目前的想法是实现一些简单的rest服务,该服务将在单独的pod中运行,其主要目的是始终返回一些由谓词过滤的应用pod的ips(入口点)列表。

所以我有几个问题:

  1. 这是正确的工作方式吗?还有其他选择吗? (无需更改旧版代码)
  2. 是否有任何现成的解决方案?如果没有,如何在我的休息服务中获取有关所需吊舱的信息?

2 个答案:

答案 0 :(得分:2)

使用作用域选择器定义服务,以便包括所有特殊Pod,然后可以列出所有端点IP询问apiservice。
您可以检查该命令是否正常工作。

kubectl获取端点

此后,如何在您的pod中执行此命令。那是另一个故事。 此链接说明了此事 https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#accessing-the-api-from-a-pod

答案 1 :(得分:0)

看起来您正在运行集群应用程序,因此可能需要结合使用Headless ServiceStatefulSet

有了它,您将能够使用简单的DNS(如replicas-[0-9].namespace.svc来访问副本,而无需从端点查询中提取IP地址。