Kubernetes:获取networking上其他Pod的IP地址

在本地networking上获取其他kubernetes pod的IP地址的最佳方式是什么?

目前,我正在使用以下命令并parsing输出: kubectl describe pods

不幸的是,上面的命令通常需要几秒钟的时间才能完成(至less3秒,通常30秒以上),如果几乎同时发生多个请求,我会得到503个样式错误。 我用这个命令构build了一个caching系统来caching本地pod上的IP地址,但是当10个左右的pod唤醒并需要创build这个caching​​时,会有很大的延迟,而且往往会出现很多错误。 我觉得我在做错事。 获取networking上其他豆荚的IP地址似乎应该是一个简单的过程。 那么得到它们的最好方法是什么?

有关更多详细信息,我正在他们的容器引擎上使用Google的kubernetes系统。 运行一个标准的Ubuntu镜像。


上下文 :要添加上下文,我试图在集群上的pod之间放置一个共享的memcached。 要做到这一点,他们都需要知道彼此的IP地址。 如果为了memcached的目的,有一种更简单的方式来链接pods /实例,那也是有帮助的。

对于你描述的用例,你应该使用服务。 无头服务将允许您使用my-svc.my-namespace.svc.cluster.local引用它们。 这假定你不需要知道每个节点,只需要知道如何到达其中的一个节点,因为它将在它们之间循环。

如果确实需要在连接到pod的群集中拥有固定的networking身份,则可以设置一个StatefulSet并引用它们: app-0.my-svc.my-namespace.svc.cluster.localapp-1.my-svc.my-namespace.svc.cluster.local等等。

你永远不需要用其他方式联系特定的pod ip,特别是因为它们可以在任何时间重新调度并且改变它们的IP。

特别是对于你的用例来说,使用memcache helm chart可能更容易一些,它支持StatefulSet中的一个集群: https : //github.com/kubernetes/charts/tree/master/stable/memcached

你有没有尝试过

 kubectl get pods -o wide 

这也返回pod的IP地址。 由于这不返回所有的信息describe返回,这可能会更快。