Kubernetes 如何在Google云平台上公开带有ClusterIP None的StatefulSet服务?

Kubernetes 如何在Google云平台上公开带有ClusterIP None的StatefulSet服务?,kubernetes,google-cloud-platform,kubernetes-statefulset,Kubernetes,Google Cloud Platform,Kubernetes Statefulset,如何公开状态集服务cassandra、mysql等。。。在谷歌云平台的Kubernetes上使用ClusterIP=None 我需要更改ClusterIP配置吗?或者我需要配置谷歌云NAT?或者我需要改变其他事情 谢谢 编辑:我想从外部IP连接到卡桑德拉,从互联网上的任何地方 EDIT2:我想解决方案是使用LoadBalance而不是ClusterIP,但是当我使用LoadBalance时,Cassandra节点找不到种子节点。然后我使用ClusterIP=None连接Cassandra集群,并

如何公开状态集服务cassandra、mysql等。。。在谷歌云平台的Kubernetes上使用ClusterIP=None

我需要更改ClusterIP配置吗?或者我需要配置谷歌云NAT?或者我需要改变其他事情

谢谢

编辑:我想从外部IP连接到卡桑德拉,从互联网上的任何地方


EDIT2:我想解决方案是使用LoadBalance而不是ClusterIP,但是当我使用LoadBalance时,Cassandra节点找不到种子节点。然后我使用ClusterIP=None连接Cassandra集群,并创建了另一个类型为LoadBalance的POD来连接Cassandra和外部。现在它开始工作了:

ClusterIP服务不会暴露在Kubernetes集群之外。也许您想改用NodePort或LoadBalancer服务?

群集IP服务不会暴露在Kubernetes群集之外。也许您想改用NodePort或LoadBalancer服务?

如果“公开”是指无需群集IP即可到达服务端点,那么只需在无头服务中使用选择器即可,即

apiVersion: v1
kind: Service
metadata:
  name: cassandra
spec:
  clusterIP: None
  selector:
    app: cassandra
  ports:
  - port: 80
    targetPort: 80
有关更多详细信息,请参阅

否则,如果您想在集群之外公开您的部署,您将无法使用headless服务来完成。

如果expose的意思是能够在没有集群IP的情况下到达您的服务端点,那么只需在headless服务中使用选择器,即

apiVersion: v1
kind: Service
metadata:
  name: cassandra
spec:
  clusterIP: None
  selector:
    app: cassandra
  ports:
  - port: 80
    targetPort: 80
有关更多详细信息,请参阅


否则,如果您想在集群之外公开您的部署,您将无法使用headless服务。

如果您想在外部公开服务,您将需要一个集群支持的服务,无论是节点端口还是负载平衡器;即使使用入口,至少也需要使用ClusterIP服务对其进行备份

ClusterIP只是内部的,它为Kubebernetes集群提供了一个固定端点,用于在内部引用部署/pod。公开服务的最简单方法是使用NodePort,在这种情况下,您的服务将以高端口号30000+从外部接管节点的IP。在GCP上,如果您定义了负载平衡器,您将获得一个外部IP,流量将被转发到有状态集中的POD。如果您使用入口,您的外部IP将是入口的IP,数据包转发到您的服务将基于请求URL(即)完成。您可以将多个FQDN映射到DNS中的单个外部IP

无头服务主要用于将您的设计与Kubernetes分离。假设您将进行自己的服务发现,我不认为这是应用程序的好用例


希望这有帮助

如果您想在外部公开该服务,您将需要一个集群支持的服务,无论是节点端口还是负载平衡器;即使使用入口,至少也需要使用ClusterIP服务对其进行备份

ClusterIP只是内部的,它为Kubebernetes集群提供了一个固定端点,用于在内部引用部署/pod。公开服务的最简单方法是使用NodePort,在这种情况下,您的服务将以高端口号30000+从外部接管节点的IP。在GCP上,如果您定义了负载平衡器,您将获得一个外部IP,流量将被转发到有状态集中的POD。如果您使用入口,您的外部IP将是入口的IP,数据包转发到您的服务将基于请求URL(即)完成。您可以将多个FQDN映射到DNS中的单个外部IP

无头服务主要用于将您的设计与Kubernetes分离。假设您将进行自己的服务发现,我不认为这是应用程序的好用例


希望这有帮助

为什么您希望ClusterIP为None?@FrankYuchengGu statefolset的服务将拥有ClusterIP=None&它被称为HeadlessService@Rui,您的意思是在集群之外公开吗?您可能想看看下面的文章,这些文章为您提供了一些关于您想要实现什么的想法。为什么您希望ClusterIP为None?@FrankYuchengGu statefolset的服务将拥有ClusterIP=None&它被称为HeadlessService@Rui,您的意思是在集群之外公开吗?您可能想看看下面的文章,这些文章为您提供了一些关于您想要实现什么的想法。我想在互联网上曝光。我希望外部服务器连接到cassandra。@Ruimatins那么ClusterIP背后的原因是什么:无?为什么不能使用端口类型LoadBalancer公开?我遵循了如何在KUBERNETESI上创建CASSANDRA群集示例的步骤,将其更改为LoadBalancer,但使用LoadBalancer只启动一个节点,其他节点启动
失败。我认为卡桑德拉需要成为没有IP的集群。我在这里读到:这可能是因为我更改了clusterIP设置以获取ip,而不是将其保留为无。根据文档--需要无头服务,所以这看起来像PEBKAC。现在一切正常。最初,您希望将您的服务公开到internet,现在返回到需要headless服务的声明。这是有争议的。唯一可能的解决方案是通过入口向internet公开无头服务。我希望外部服务器连接到cassandra。@Ruimatins那么ClusterIP背后的原因是什么:无?为什么不能使用端口类型LoadBalancer公开?我遵循了如何在KUBERNETESI上创建CASSANDRA群集的示例中的步骤,将其更改为LoadBalancer,但使用LoadBalancer时,只有一个节点启动,其他节点失败。我认为卡桑德拉需要成为没有IP的集群。我在这里读到:这可能是因为我更改了clusterIP设置以获取ip,而不是将其保留为无。根据文档--需要无头服务,所以这看起来像PEBKAC。现在一切正常。最初,您希望将您的服务公开到internet,现在返回到需要headless服务的声明。这是有争议的。唯一可能的解决方案是通过带有匹配标签选择器的入口公开无头服务