Kubernetes StatefulSets使用稳定的网络ID创建内部DNS条目 . 文档在这里描述:
StatefulSet中的每个Pod都从StatefulSet的名称和Pod的序号中派生其主机名 . 构造的主机名的模式是$(statefulset name) - $(ordinal) . 上面的示例将创建三个名为web-0,web-1,web-2的Pod . StatefulSet可以使用无头服务来控制其Pod的域 . 此服务管理的域采用以下形式:$(服务名称) . $(名称空间).svc.cluster.local,其中“cluster.local”是集群域 . 在创建每个Pod时,它将获得匹配的DNS子域,采用以下形式:$(podname) . $(管理服务域),其中管理服务由StatefulSet上的serviceName字段定义 .
我正在尝试无头服务,这对于各个服务之间的通信非常有用,即 web-0.web.default.svc.cluster.local
可以与_2908246连接和通信就好了 .
Is there any way that I can configure this to work outside of the cluster network as well, where "cluster.local" is replaced with something like "clustera.com"?
我想给另一个kubernetes集群,让我们称之为clusterb.com,访问原始集群的各个服务(clustera.com);我希望它看起来像clusterb只是命中像 web-1.web.default.svc.clustera.com
和 web-0.web.default.svc.clustera.com
这样的 endpoints .
这可能吗?我想访问各个服务,而不是负载 balancer endpoints .
1 回答
我建议您测试以下解决方案,并检查它们是否可以帮助您在特定方案中实现目标:
我在谈论Headless services没有外部名称类型服务的选择器CNAME记录 .
因此,如果您需要指向其他群集的服务,则需要注册指向
clusterb
的相对IP的域名 .