我们部署了一个带有度量作业的Java应用程序,它等待同一名称空间中的客户端应用程序通过http端点推送它们的度量。因此,我们将pod ip地址附加到客户端的指标中,并将其存储起来,以便稍后报告。我们现在正在努力解决的问题是,因为pod不是有状态的,在某些时候pod不可用或死亡,他们用一个新的IP地址重新启动。这意味着我们应该处理旧pod的陈旧指标,该指标由陈旧pod IP标识。我们希望在metrics应用程序中创建一个预定的作业,以遍历所有metrics并检查附加到它们的IP地址,并处理不指向任何可用pod的陈旧metrics。是否有一种方法可以查询具有IP地址的Pod是否可用或存在于另一个Pod中?
实际上,我们不知道什么样的客户端将指标推送到指标端点。在同一命名空间中部署了从nodejs到Java应用程序的各种应用程序。所以我们不能从数据中提取指标。Kubernetes客户端库现在还不是一个可行的选择,因为我们所处的环境迫使我们避免对Kubernetes API服务器进行HTTP调用。
1条答案
按热度按时间3zwtqj6y1#
我需要一种简单的方法来知道一个IP地址是否可以解析为一个活跃的pod,该IP地址被附加到我用Java编写的metrics服务中存储的metrics。幸运的是,在Java中编程很容易。
示例:我有一个来自客户服务的交易计数指标。with cluster ip
trx_count{app="10-187-79-75-frictionless-symphony-service"}
只需将10-187-79-75
解析为正确的IP表示,如10.187.79.75
,然后在我们的指标服务中编写以下代码如果该IP Pod不可用,则
getHostName
方法返回的字符串不是主机名,而是与作为参数传递的IP地址完全相同的IP地址。