【已解决】配置文件中 DNS 解析失败,找不到 Nacos 注册中心

问题描述

服务配置完之后docker容器反复重启

排查问题

查看容器日志发现spring boot启动时,一直找不到nacos服务导致启动失败

解决方案

先说结果,笔者的服务采用的服务类型是 NodePort,而在 Kubernetes 中,通过 DNS 名称访问服务的方式是依赖于服务的 ClusterIP。通常服务的 DNS 名称格式是 [服务名].[命名空间].svc.cluster.local

首先查看服务信息,确定服务类型,对于笔者的 ry-nacos 服务,ClusterIP10.233.31.41

kubectl get svc -n ruoyi   # 查看服务信息

可以在一个 Pod 中执行以下命令来验证 DNS 解析是否正常:

kubectl exec -it <your-pod-name> -- nslookup ry-nacos.ruoyi.svc.cluster.local

或者直接在一个运行中的 Pod 中测试:

kubectl exec -it <your-pod-name> -- curl http://ry-nacos.ruoyi.svc.cluster.local:8848/nacos/v1/ns/instance/list?serviceName=test

加上.svc.cluster.local 后 DNS 解析正常

笔者的 Spring Boot 应用程序的配置文件中初始设置如下:

spring: 
  cloud:
    nacos:
      discovery:
        server-addr: ry-nacos.ruoyi:8848
      config:
        server-addr: ry-nacos.ruoyi:8848

尝试修改配置文件,修改三次均无效

查询官方资料后发现这里的 ry-nacos.ruoyi 是一个错误的 DNS 名称。在 Kubernetes 中,通常服务的 DNS 名称格式是 [服务名].[命名空间].svc.cluster.local

所以对于笔者遇到的问题,只需要将 DNS 修改为

spring: 
  cloud:
    nacos:
      discovery:
        server-addr: ry-nacos.ruoyi.svc.cluster.local:8848
      config:
        server-addr: ry-nacos.ruoyi.svc.cluster.local:8848

再次打包上传,启动服务,启动成功

相关资料

Service 与 Pod 的 DNS | Kubernetes

服务(Service) | Kubernetes

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值