问题描述

k8s 集群模式nacos无法相互发现


原因分析:

检查nacos日志发现,报错无法选主在这里插入图片描述
在这里插入图片描述
nacos控制台可以看到频繁在投票选举,异常节点ip可以看到,k8s svc全路径local后多了一个小点(.),这就是罪魁祸首了。

K8S中StatefulSet是有状态应用:

  • Pod名称末尾有编号。从0开始,按顺序启动,前边Pod启动成功后,才开始启动后边Pod。
  • 拥有固定的网络标志
  • 持久化存储

网络标志最终是通过Headless Service来实现的,Headless Service 服务没有cluster IP

  • 对于ClusterIP模式的Service来说,它的A记录格式是serviceName.namespace.svc.cluster.local,当你访问这条 A 记录的时候,它解析到的就是该 Service 的 VIP 地址。
  • 对于指定了 clusterIP=None 的 Headless Service来说,它的A记录的格式跟上面一样,但是访问记录后返回的是Pod的IP地址集合。Pod 也会被分配对应的 DNS A 记录,格式为:podName.serviceName.namesapce.svc.cluster.local

解决方案:

排查kubelet配置文件,ClusterDomain属性配置错误,导致Headless Service服务域名解析错误
在这里插入图片描述

导致自动生成的DNS记录多了一个点,podName.serviceName.namesapce.svc.cluster.local.
无法解析

修改kubelet配置,删掉多余的点,重启kubelet问题恢复

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐