Kubernetes状态集:外部DNS

Kubernetes状态集:外部DNS,kubernetes,google-cloud-platform,google-cloud-dns,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Cloud Dns,Google Kubernetes Engine,Kubernetes使用稳定的网络ID创建内部DNS条目。文件在这里描述了这一点: StatefulSet中的每个Pod都从 StatefulSet和Pod的序号。未来的模式 构造的主机名为$(statefulset name)-$(序号)。榜样 上面将创建三个pod,分别命名为web-0、web-1和web-2。富丽堂皇的一套 可以使用无头服务来控制其POD的域。这个 此服务管理的域的形式为:$(服务 名称)。$(命名空间).svc.cluster.local,其中“cluster.local

Kubernetes使用稳定的网络ID创建内部DNS条目。文件在这里描述了这一点:

StatefulSet中的每个Pod都从 StatefulSet和Pod的序号。未来的模式 构造的主机名为$(statefulset name)-$(序号)。榜样 上面将创建三个pod,分别命名为web-0、web-1和web-2。富丽堂皇的一套 可以使用无头服务来控制其POD的域。这个 此服务管理的域的形式为:$(服务 名称)。$(命名空间).svc.cluster.local,其中“cluster.local”是 群集域。在创建每个Pod时,它将获得一个匹配的DNS 子域,形式为:$(podname)。$(管理服务域), 其中,管理服务由上的serviceName字段定义 状态设置

我正在试验无头服务,这对于单个服务之间的通信非常有效,即
web-0.web.default.svc.cluster.local
可以连接到
web-1.web.default.svc.cluster.local
并与之通信

是否有任何方法可以将其配置为在群集网络之外工作,其中“cluster.local”被替换为“clustera.com”?

我想让另一个kubernetes集群,我们称之为clusterb.com,访问原始集群(clustera.com)的各个服务;我希望它看起来像clusterb,只是简单地命中像
web-1.web.default.svc.clustera.com
web-0.web.default.svc.clustera.com
这样的端点


这可能吗?我希望访问单个服务,而不是负载平衡的端点。

我建议您测试以下解决方案,并检查它们是否可以帮助您在特定场景中实现目标:

  • 第一个肯定是最简单的,我相信你没有实现它是出于某种原因,你没有在问题中报告为什么

    我说的是没有选择器的外部名称类型服务的CNAME记录

    :通过返回CNAME记录及其值,将服务映射到externalName字段的内容(例如foo.bar.example.com)。未设置任何类型的代理。这需要kube dns的1.7版或更高版本

    因此,如果您需要指向其他群集的服务,则需要注册指向
    clusterb
    的相对IP的域名

  • 我从未测试过的第二个解决方案,但我相信它可以应用于您的案例,即使用一个符合文档要求的解决方案:

    跨群集发现:联合提供了使用所有群集的后端自动配置DNS服务器和负载平衡器的能力。例如,您可以确保全局VIP或DNS记录可用于访问来自多个集群的后端