【问题标题】:Is it required to use a headless service for statefulsets?是否需要对有状态集使用无头服务?
【发布时间】:2019-11-24 13:21:10
【问题描述】:

关于无头服务有几个问题:

  1. 是否需要对有状态集使用无头服务?我也可以将正常的 service.yml 用于有状态集吗?
  2. 是否需要先使用服务然后再使用无头服务?我可以只使用无头服务吗?
  3. 我可以不使用 pod 来附加到服务而不是无头服务吗?

【问题讨论】:

    标签: kubernetes kubernetes-service kubernetes-statefulset


    【解决方案1】:
    1. 您不必必须为 StatefulSet 使用 Headless Service,但如果您想利用 StatefulService 中每个 Pod 的粘性身份(即按名称寻址特定 Pod,而不是像普通 Service 那样随机寻址任何 Pod。
    2. 不知道你是什么意思。您可以通过定义 ClusterIP 服务并将 clusterIP 字段设置为 None 来创建无头服务。
    3. 您也可以通过某些工具(例如 kubectl port-forward)直接使用 Pod 名称,但 Headless Service 会为所有 Pod 创建 DNS 名称,因此您可以以更通用的方式对其进行寻址。

    参考资料:

    【讨论】:

      【解决方案2】:

      无头服务不携带任何 clusterIP,它只是将您直接带到您需要通过其主机名与之通信的特定 pod。

      举个例子——

      假设您安装了 kafka statefulset,在其中运行 3 个代理,现在您想专门与一个代理通信,然后可以通过无头服务完成,

      任何普通服务都可以做流量的随机分配(如果你没有添加任何特定的亲和度),普通服务也可以为你做,这都是基于用例场景

      【讨论】:

        猜你喜欢
        • 2017-11-11
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        • 2020-02-29
        • 2011-02-05
        相关资源
        最近更新 更多