【问题标题】:How do I expose each individual Pod in a DaemonSet without hostNetwork如何在没有 hostNetwork 的情况下在 DaemonSet 中公开每个单独的 Pod
【发布时间】:2019-11-11 19:36:13
【问题描述】:

如何在没有 hostNetwork 的情况下访问 DaemonSet 中的特定 Pod?原因是我在 DaemonSet 中的 Pod 是有状态的,我更喜欢在每个 Node 上最多有一个工作人员(这就是我使用 DaemonSet 的原因)。

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

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

该应用程序以 HDFS 风格运行,其中 Workers(datanodes) 使用其主机名向 Masters(namenodes) 注册。主人和外部客户需要去特定的工作人员那里托管什么。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    hostNetwork 是可选设置,不是必需的。您可以在不指定的情况下连接到您的 pod。 要与 DaemonSet 中的 pod 通信,您可以在 DaemonSet 的 pod 规范中指定 hostPort 以在节点上公开它。然后,您可以使用它正在运行的节点的 IP 直接与它通信。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多