【发布时间】:2018-04-11 00:17:59
【问题描述】:
这个问题与本地集群(kubernetes 1.10+ 版本,Linux)有关。在创建 StatefulSet 来管理多个 Pod 后,我遇到了一个需要为 Pod 设置 FQDN 身份的用例。
例如,我希望第一个 pod 的 FQDN 身份为 <some-statefulset>-0.<some-subdomain>.default.svc.cluster.local。可以通过将<IP-address> <some-statefulset>-0.<some-subdomain>.default.svc.cluster.local 添加到/etc/hosts 文件中来实现所需的行为,但我希望在不更改/etc/hosts 文件的情况下在本地集群中自动识别FQDN。
不确定在启动本地集群时是否需要启用某些设置。
【问题讨论】:
-
您是说能够在集群内部还是从外部访问它们?当您使用
StatefulSet时,您通常希望拥有一个无头服务。这将为您提供 DNS 名称,以便在集群中访问它们。见kubernetes.io/docs/concepts/services-networking/service/… 和kubernetes.io/docs/concepts/services-networking/dns-pod-service/… -
我用 FQDN 示例更新了问题。我确实设置了一个与 pod 的子域同名的无头服务,但我仍然无法使用 nslookup 检查主机名。
-
如果您为 Kubernetes 集群部署了 DNS,您应该已经可以使用
my-pod-0.my-svc.my-namespace.svc.cluster.local。这至少有效吗?您能否展示您已经尝试过的 FQDN 的具体示例?如果有内部 DNS 工作,它应该可以正常工作,而无需使用/etc/hosts。 -
抱歉回复晚了。我尝试的 FQDN (
some-statefulset-0.some-service.default.svc.cluster.local) 与您建议的格式完全相同,但我无法使用它。我的猜测是kube-dns附加组件没有在本地集群上正确设置。我检查了这个tutorial,但发现一些必要的步骤失败了。我将继续按照教程建议的方向工作,如果我能够回答我自己的问题,我会发布我的发现。非常感谢您的帮助!
标签: kubernetes fqdn