当前位置: 首页 > 知识库问答 >
问题:

带有GKE内部负载平衡器的DNS

夹谷成龙
2023-03-14

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

公共集群需要访问私有集群上的一些服务,我已经通过内部负载平衡器向公共集群的pod公开了这些服务。目前,我正在为负载平衡器指定要使用的内部IP地址,并将这些IP传递给公共POD,但我更希望负载平衡器可以选择任何可用的内部IP地址,并且我可以将其DNS名称传递给公共POD。

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

共有3个答案

颜骁
2023-03-14

您可以通过为内部loadbalancer分配工作节点CIDR的ip来实现这一点。在GKE中,我们在创建集群1时提供三个CIDR块。工作节点cidr 2。Pod cidr 3。服务endpointcidr(通常由loadbalancer使用)。我们为吊舱砂服务提供的CIDR仅在Kubernetes内可见。因此其外部不可见。

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

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

汤玉宸
2023-03-14

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

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

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

陆星文
2023-03-14

从未听说过GKE中用于负载平衡器的内置DNS,但我们实际上做得很简单。我们有外部DNS Kubernetes服务,该服务管理负载平衡器和入口等各种事物的DNS记录。您可以做什么:

  1. 创建Cloud DNS内部区域。确保将其与您的VPC集成。
  2. 确保您的库伯内特斯节点服务号具有DNS管理员(或超宽编辑器)权限。
  3. 安装外部DNS。
  4. 使用external-dns.alpha.kubernetes.io/hostname=your.hostname.here
  5. 注释您的内部负载均衡器服务
  6. 验证DNS记录是否已创建并且可以在您的VPC中解析。
 类似资料:
  • 这意味着Zookeeper将负载均衡器理解为一个客户机,并与之建立联系。但是负载均衡器只是ping TCP2181就出来了。

  • 我一直在寻找一个合适的方法,以地面化我的内部虚拟机规模与内部负载均衡器,不暴露于互联网与公共IP。但是,节点应该能够访问internet以下载GitHub中的一些包。 我面临的问题是,负载均衡器和规模集都已部署,但我没有来自规模集节点的internet带外连接... 我读了这篇文章,但它没有告诉如何继续 根据我的理解,我应该有互联网访问从我的节点下载包,因为我使用了一个标准的负载均衡器,但它不工作

  • 我们在AWS VPC中有一个面向内部的应用程序负载平衡器。运行在公用子网中的web应用程序正在访问此文件。该web应用位于自定义域url后面,并使用SSL证书进行安全保护。由于API负载平衡器未应用SSL,因此从web app到API LB的通信失败。 是否可以在AWS中为面向内部的负载平衡器获取SSL证书?

  • 有一个入口配置,比如 gke创建了nginx ingress负载平衡器,但也创建了另一个具有后端的负载平衡器,就像如果没有选择nginx,而是选择gcp作为ingress一样。 下面的屏幕截图以红色显示了两个意外的LB,蓝色显示了两个nginx ingress LB,分别用于我们的qa和prod env。 kubectl的输出获取服务 gcp gke服务视图中错误信息入口的屏幕截图 这是意料之中的

  • 我已经在AKS上部署了我的kubernetes应用程序,它使用内部负载均衡器,而没有单独的入口控制器。 目前该服务可以使用超文本传输协议访问,我想保护该服务。如何启用https以及应在何处安装证书?

  • 我试图使用Kubernetes来明确定义配置和部署,我也喜欢Kubernetes的pod调度机制。目前,只有2个应用程序在3个节点上的2个副本上运行。但是谷歌的Kubernetes引擎的负载平衡器对于像我们这样的小应用程序来说非常昂贵(至少目前如此),同时我不愿意改为在容器上托管单个实例的解决方案,也不愿意在Docker swarm等上部署应用程序。 使用节点的IP似乎是一种黑客行为,我认为这可能