[alibaba/nacos]nacos v2.2.3版本,微服务注册nacos疑问

2024-03-21 451 views
5

nacos v2.2.3版本,k8s 微服务注册nacos,重启pod或者删除pod, nacos注册实例不会消失,一直显示健康

回答

0

是否有更加详细的信息,例如报错日志之类的?正常情况下,当删除pod,nacos服务端一段时间没有接收到sdk的心跳,会将该实例移除。

1

你好,nacos.log打印日志如下 无报错,只是一直打印

只有杀进程才会收到红色箭头注销日志。单纯删除k8s pod  不会收到这个日志

另外  nacos v2.2.3版本 我安装过二进制部署,docker部署,k8s部署。 然后在k8s 部署微服务,删除pod,nacos都不会注销还是显示健康,等几小时后才会注销消失不见。如果我微服务是java -jar 跑起来的,kill  杀进程,那么就会立即注销,这是正常的。    然后我还测试过2.1版本,2.1版本不存在这个问题。 是不是2.2.3版本的sdk在代码集成上有什么特殊配置。或者能给个联系方式方便远程5分钟支持下吗?

是否有更加详细的信息,例如报错日志之类的?正常情况下,当删除pod,nacos服务端一段时间没有接收到sdk的请求,会将改实例移除。

1

你的nacos.log日志是没有上传吗?我这边没有显示,你可以把nacos.log上传一下,如果确定有问题,社区会进行修复的。目前提供的信息太少,无法判断原因。

2

你好,nacos.log日志已上传附件。

问题详细描述:     1、  nacos v2.1.0版本  ,微服务部署方式  【java -jar  和  k8s  上跑微服务 删除pod】 注册列表正常秒级注销实例。     2、  nacos v.2.2.3版本,微服务部署方式    【java -jar】 杀进程。正常秒级注销实例。     3、  nacos v.2.2.3版本,微服务部署方式    【k8s  上跑微服务 删除pod】 新的pod是正常注册上来了,但是旧的注册实例是已经不存在了,起码过20分钟或者两三小时才注销实例。【这是有问题的】     4、  nacos v.2.2.3版本,微服务部署方式    【k8s  上跑微服务 进容器杀进程】 正常注销实例。

以上1,2,4是正常现象,第三点有问题。附件日志可以看出,就,算删除了pod,nacos依旧显示日志 ,长连接一直是存在的,等很久才会消失,或者重启nacos, 才能正常。

2023-10-18 13:41:07,616 INFO Connection check task end 2023-10-18 13:41:09,791 INFO ConnectionMetrics, totalCount = 2, detail = {long_connection=2, long_polling=0}

2
  1. 可能是出现了幽灵pod, 导致心跳依旧在发送或者连接一直未断开。
  2. 集群健康检查被关闭,可使用curl -X GET '127.0.0.1:8848/nacos/v1/ns/operator/switches'查看
  3. 可能是一个已知bug, 断网场景连接断开不会被感知到, 新版本将会修复。
2

你好,执行curl -X GET '127.0.0.1:8848/nacos/v1/ns/operator/switches'   返回下图,集群健康检查是已开启的, 不是幽灵pod ,pod查询过了是已经不存在了。

1

从描述上来看, 是幽灵pod的概率非常大。

  1. 幽灵pod指的是,k8s中已经看不到这个pod了, 但是这个pod的进程依旧在node中运行。
  2. nacos 断网长连接无法移除的bug是断网时,由于pingpong超时时间失效导致过期的数据未被及时移除,但是你描述的是杀了pod之后还在,一般杀pod会stop进程,连接会挥手断开,不会触发这个bug。

综上,大概率是幽灵pod导致的,可以看下node上是不是还有非预期的9848的连接。可以通过连接来定位到进程,直接从node上kill 进程试一下。

8

你好,杨老师,经上所述测试结果 1、v2.2.3版本,进入微服务容器,kill -9  杀进程,实例是几秒钟就消失了。 2、v2.2.3版本,删除pod之后,使用命令netstat 查询k8s所有节点,未找到 此微服务 有关9848和8848,(或者nodeport对应的端口) 3、v2.1.1,v2.1.0 版本,删除pod,这两版本都会正常几秒钟就注销实例(和v2.2.3版本使用的是同一个微服务镜像)

5

第二个场景, 在nacos-server测执行netstat 查看是否有9848连接呢。

2

nacos-server容器里面  netstat |grep 9484查询不到

9

那就不是bug导致的, 需要你在自查一下环境是否有问题, 如果是bug导致的, 此时连接9848的连接还在,只是这个连接不会发送数据包了。

0

我这边也遇到这个问题 nacos2.2.3+k8s,目前排查有如下几个特征 1.pod下线偶尔会遇到这个问题 2.ping和telnet下线的pod不通,运维协助也发现该pod确实已下线 3.排查日志发现pod实际下线后nacos就没有该pod的心跳日志,也没有下线日志

综合情况来看可能是你说的第三种情况,待下次浮现排查

5

你好,感谢你的回件,可以叫贵司运维试试连续多次删除pod,或者给某个pod 开多副本,待注册nacos之后降副本为1, nacos日志每次上线都会收到日志,但是下线日志无法收到,除非进入容器kill -9  pod的进程才收到。

7

经过多次上下线浮现了这个问题,现象如下:100.95.66.131这个ip的pod确认已下线,但在nacos server容器用netstat命令看到 tcp soket连接还在,并且nacos后台长时间不下线,日志也无心跳日志 image

7

类似这种问题。低版本2.1.1,2.1.0 不会出现这个问题,顶多就两秒钟就下线成功了。

5

@KomachiSion 我这种情况是你说的第三情况么,如果是的化修复的版本计划是那个版本号呢?

6

2.3.0-BETA