【问题标题】:How can I expose a StatefulSet service with ClusterIP None on Google Cloud Platform?如何在 Google Cloud Platform 上使用 ClusterIP None 公开 StatefulSet 服务?
【发布时间】:2019-03-31 23:20:22
【问题描述】:

如何在 Google Cloud Platform 的 Kubernetes 上使用 ClusterIP=None 公开 StatefulSet 服务(cassandra、mysql 等)?

我需要更改 ClusterIP 配置吗?还是我需要配置 Google Cloud NAT?还是我需要更改其他内容?

谢谢

编辑:我想从互联网上的任何地方从外部 IP 连接到 cassandra

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

【问题讨论】:

标签: kubernetes google-cloud-platform kubernetes-statefulset


【解决方案1】:

如果“公开”是指无需集群 IP 即可到达服务端点的能力,则只需在无头服务中使用 selector,即

apiVersion: v1
kind: Service
metadata:
  name: cassandra
spec:
  clusterIP: None
  selector:
    app: cassandra
  ports:
  - port: 80
    targetPort: 80

更多详情请参考documentation

否则,如果您想在集群之外公开您的部署,您将无法使用无头服务来做到这一点。

【讨论】:

  • 我想暴露在互联网上。我希望外部服务器连接到 cassandra。
  • @RuiMartins 那么 ClusterIP: None 背后的原因是什么?为什么不能使用端口类型 LoadBalancer 公开?
  • 我按照“HOW TO CREATE A CASSANDRA CLUSTER ON KUBERNETES”示例的步骤进行操作
  • 我改成了“LoadBalancer”,但是用“LoadBalancer”只启动了一个节点,其他节点都失败了。我认为cassandra需要是没有IP的ClusterIP。我在这里读到:github.com/jaegertracing/jaeger-kubernetes/issues/33“这可能是由于我更改 clusterIP 设置以获取 ip,而不是将其保留为 None。根据文档 - kubernetes.io/docs/concepts/workloads/controllers/statefulset - 需要无头服务,所以这看起来像PEBKAC。现在工作正常。”
  • 最初,您希望将您的服务公开到 Internet,现在返回到需要无头服务的声明。这是有争议的事情。唯一可能的解决方案是使用 matchLabels 选择器通过入口公开无头服务
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果你想在外部公开服务,你需要一个由 ClusterIP 支持的服务,无论是 NodePort 还是 LoadBalancer;即使您使用 ingress,您至少也需要使用 ClusterIP 服务对其进行备份。

    ClusterIP 只是内部的,它为 Kubebernetes 集群提供了一个固定的端点来在内部引用您的部署/pod。公开服务的最简单方法是使用NodePort,在这种情况下,您的服务将在外部使用具有高端口号(30000+)的节点的 IP。在 GCP 上,如果您定义 load-balancer,您将获得一个外部 IP,并且流量将按顺序转发到有状态集中的 pod。如果您使用入口,您的外部 IP 将是您的入口的 IP,并且将根据请求 URL 将数据包转发到您的服务(即,您可以将多个 FQDN 映射到 DNS 中的单个外部 IP)。

    “无头”服务主要用于将您的设计与 Kubernetes 解耦。假设您将进行自己的服务发现,我认为这对您的应用程序来说不是一个好的用例。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多