有几个关于无头服务的问题:1.对于有状态的集合,是否需要使用headless服务?我是否也可以对有状态的集合使用normal service.yml?1.是否需要使用一个服务,然后是无头服务?我可以直接使用无头服务吗?1.我可以不使用pod连接到服务而不是无头服务吗?
x9ybnkn61#
1.从技术上讲,您不必使用Headless服务,但如果您希望利用StatefulSet中每个Pod的粘性标识,则使用Headless服务通常是有意义的(即,按名称寻址特定Pod,而不是像普通服务那样随机寻址任何Pod)。1.不确定您的意思。您可以通过定义ClusterIP服务并将clusterIP字段设置为None来创建无头服务。1.您也可以通过某些工具(例如kubectl port-forward)直接使用Pod名称,但Headless Service会为所有Pod创建DNS名称,以便您可以使用更通用的方式对其进行寻址。
clusterIP
None
kubectl port-forward
n53p2ov02#
Headless服务不携带任何clusterIP,它只是通过主机名将您直接带到您需要通信的特定pod。让我们举个例子-假设您安装了Kafka statefulset,在其中运行3个代理,现在您希望与一个代理进行通信,这可以通过headless服务来完成。任何普通服务都可以进行流量的随机分配(如果您没有添加任何特定的关联),普通服务也可以为您进行,这完全基于用例场景
2条答案
按热度按时间x9ybnkn61#
1.从技术上讲,您不必使用Headless服务,但如果您希望利用StatefulSet中每个Pod的粘性标识,则使用Headless服务通常是有意义的(即,按名称寻址特定Pod,而不是像普通服务那样随机寻址任何Pod)。
1.不确定您的意思。您可以通过定义ClusterIP服务并将
clusterIP
字段设置为None
来创建无头服务。1.您也可以通过某些工具(例如
kubectl port-forward
)直接使用Pod名称,但Headless Service会为所有Pod创建DNS名称,以便您可以使用更通用的方式对其进行寻址。n53p2ov02#
Headless服务不携带任何clusterIP,它只是通过主机名将您直接带到您需要通信的特定pod。
让我们举个例子-
假设您安装了Kafka statefulset,在其中运行3个代理,现在您希望与一个代理进行通信,这可以通过headless服务来完成。
任何普通服务都可以进行流量的随机分配(如果您没有添加任何特定的关联),普通服务也可以为您进行,这完全基于用例场景