JVVM 今天开始尝试一下kubeSphere,然后发现headless service建立之后,其非0节点的域名竟然是和ip挂钩的,这个设计让我百思不得其解。我理解的headless service应该是通过域名对拓扑结构进行固定,例如:redis-0.redis-headless,redis-1.redis-headless等,当节点伸缩的时候IP变化而域名不变,这样才能支持如读写分离等的功能。而现在在kubeSphere建立headless service后生成的域名是如:10-233-109-17.redis-headless,前缀是IP的格式化,这样不就与IP绑定了吗?经过伸缩测试了一下,域名还真的会与IP绑定,然后变来变去,请各位看官大神讲解一下kubeSphere对headless域名设计的思路?谢谢。
Jeff JVVM 这个只是nslookup的返回结果而已,和k8s的设计并不违背,后面的地址是k8s为这个ip自动生成的alias,pod名称也是alias,这里只是显示了这个alias,并没有pod名称。headless service地址解析到对应的pod ip地址,你可以试下解析pod名称是否对应它的ip。
JVVM Jeff 后面显示的应该是从coreDNS中解析出来的域名吧?直接使用nslook对这些域名解析是可以得到对应正确的IP的,但这种与IP绑定的域名并不实用,而且直接解析pod的名称怎么可能可以?headless service如果是原生k8s的话,生成的域名应该是redis-0.redis-5y0juw.base-common.svc.cluster.local、redis-1.redis-5y0juw.base-common.svc.cluster.local,这样的,现在生成的10-233-69-25.redis-5y0juw.base-common.svc.cluster.local与IP绑定了。。。这个不能解决吗?
Jeff JVVM 这里是kubernetes自动生成的域名,kubesphere没有做任何改动。我还是不明白这个结果对于你的程序来说有啥影响,这个域名 redis-5y0juw-0.redis-open.base-common.svc.cluster.local 不能解析么? ==== 后面两个名称不能解析不是这个自动生成的域名导致,你看下coredns的日志,应该和dns有关