【问题标题】:DNS with GKE Internal Load Balancers带有 GKE 内部负载均衡器的 DNS
【发布时间】:2019-09-14 18:37:45
【问题描述】:

我在 GKE 上有两个 kubernetes 集群:一个是公共的,用于处理与外部世界的交互,一个是私有的,仅供内部使用。

公有集群需要访问私有集群上的一些服务,我已经通过internal load balancers将这些暴露给公有集群的pods。目前,我正在指定负载均衡器使用的内部 IP 地址并将这些 IP 地址传递给公共 P​​od,但我希望负载均衡器可以选择任何可用的内部 IP 地址,并且我可以将它们的 DNS 名称传递给公共 P​​od .

Internal load balancer DNS 可用于为 VM 提供服务的常规内部负载平衡器,DNS 将采用 [SERVICE_LABEL].[FORWARDING_RULE_NAME].il4.[REGION].lb.[PROJECT_ID].internal 的形式,但是 GKE 上的内部负载平衡器有可用的东西吗?或者是否有一种解决方法可以让我完成类似的事情?

【问题讨论】:

    标签: kubernetes google-cloud-platform dns google-kubernetes-engine


    【解决方案1】:

    从未听说过 GKE 中的负载均衡器内置 DNS,但实际上我们这样做非常简单。我们有External DNS Kubernetes 服务,它为负载均衡器和入口等各种事物管理 DNS 记录。你可以做什么:

    1. 创建 Cloud DNS 内部区域。确保将其与您的 VPC 集成。
    2. 确保您的 Kubernetes 节点服务帐户具有 DNS 管理员(或超宽编辑器)权限。
    3. 安装外部 DNS。
    4. 使用 external-dns.alpha.kubernetes.io/hostname=your.hostname.here 注释您的内部负载均衡器服务
    5. 验证 DNS 记录是否已创建并且可以在您的 VPC 中解析。

    【讨论】:

      【解决方案2】:

      我怀疑“内部负载平衡器 DNS”路由是否有效,但我想到了一些解决方法:

      1) 入口:在您的公共集群中,将所有私有服务名称映射到您的私有集群中的入口控制器。 Ingress 可以将每个主机名的请求路由到正确的服务。

      2) 存根域:为您的私有服务使用一些通用后缀(例如 *.private),并使用私有集群 kube-dns 解析这些服务名称(参见https://kubernetes.io/blog/2017/04/configuring-private-dns-zones-upstream-nameservers-kubernetes/

      例子:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: kube-dns
        namespace: kube-system
      data:
        stubDomains: |
          {"private": ["10.2.3.4"]}
        upstreamNameservers: |
          ["8.8.8.8", "8.8.4.4"]
      

      3) 没试过,但kEdge 似乎是另一个集群间安全通信的解决方案:https://improbable.io/blog/introducing-kedge-a-fresh-approach-to-cross-cluster-communication

      【讨论】:

        【解决方案3】:

        您可以通过为内部负载均衡器分配工作节点 CIDR 的 ip 来实现此目的。在 GKE 中,我们在创建集群时提供了三个 CIDR 块 1. 工作节点 cidr 2. 豆荚苹果酒 3. 服务端点 cidr(通常由负载均衡器使用)。 我们为 Pod 和服务提供的 CIDR 仅在 Kubernetes 中可见。因此它在外面是不可见的。

        您可以从工作节点 CIDR 分配一个来自 VPC 子网的 ip,而不是使用内部负载均衡器的服务端点 ip,因此该 ip 在不同集群的 pod 之间是可见的。

        这种方法的缺点是您将在自动缩放期间丢失一个工作节点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-29
          • 1970-01-01
          • 1970-01-01
          • 2021-10-27
          • 2021-01-14
          • 2020-05-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多