如何在没有hostNetwork的情况下公开DaemonSet中的每个Pod

如何在没有hostNetwork的情况下转到daemonset中的特定pod?原因是我在daemonset中的pod是有状态的,并且我更愿意在每个Node上最多拥有一个工作器(这就是为什么我使用daemonset的原因)。

我最初的实现是使用hostNetwork,以便外部客户端可以通过Node IP找到工作pod。但是在许多生产环境中,hostNetwork被禁用,因此我们必须为daemonset的每个pod创建一个NodePort服务。这不灵活,并且从长远来看显然是行不通的。

有关我的应用程序如何处于有状态状态的更多背景

该应用程序以HDFS风格工作,其中Workers(数据节点)使用其主机名向Masters(名称节点)注册。主人和外部客户需要找一个特定的工人来托管它。

chahu2008 回答:如何在没有hostNetwork的情况下公开DaemonSet中的每个Pod

hostNetwork是可选设置,不是必需的。您无需指定即可连接到吊舱。 要与DaemonSet中的Pod通信,您可以在DaemonSet的Pod规范中指定hostPort以将其公开在节点上。然后,您可以使用运行它的节点的IP直接与其通信。

连接到有状态应用程序的另一种方法是StatefulSet。它允许您指定网络标识符。但是,它需要headless service来获得Pod的网络身份,并且您有责任创建此类服务。

本文链接:https://www.f2er.com/3121755.html

大家都在问