【发布时间】:2019-11-12 08:59:33
【问题描述】:
我有许多 statefulsets POD,它们不是彼此的副本。我的应用程序在 pod 的主机名上注册服务,其他服务尝试根据主机名访问服务。它适用于无头服务,但应用程序逻辑无法更改,因为它读取 POD 的主机名,不幸的是我必须使用它。
我有以下场景:
[test@shard1-0 ~]$ nslookup shard2
Server: 10.96.5.5
Address: 10.96.5.5#53
Name: shard2.default.svc.cluster.local
Address: 10.244.0.50
[test@shard1-0 ~]$ nslookup shard2-0
Server: 10.96.5.5
Address: 10.96.5.5#53
** server can't find shard2-0: NXDOMAIN
[test@shard1-0 ~]$
有没有办法让分片可以使用 POD 名称的主机名进行解析?并且可以在应用程序基于 pod 主机名注册时相互访问。
为了澄清我们是否能够解决这个问题,我们还需要将这些 pod 暴露在外部。我认为为此我可以使用它,并希望它会起作用: How to set hostname for kubernetes pod in statefulset
【问题讨论】:
-
你不能修改你的应用程序来调用podName.serviceName吗?即 shard2-0.shard2?
-
我试过了,看来我的应用程序代码需要一些更改来强制执行 hostname.svcname,因为默认情况下它读取主机名。
标签: kubernetes google-kubernetes-engine