最近使用python写了一个服务,需要将自己的服务注册到nacos当中

参考了git上面的sdk,发现能成功注册临时实例,但是过一会,在nacos就会显示服务不健康,从而将我注册的服务给下线了。于是参考了nacos的文档以及网络大佬的介绍,采用了注册持久化实例的方式进行注册。

因为持久化实例不再是客户端发送心跳给nacos,而是nacos会定时的向客户端发送健康检测,但是这种情况就会造成每当我在k8s中重启服务的时候,我的ip就可能发生变化,导致我的一个服务中会有越来越多的持久化实例,并且显示不健康的状态。这样就很不好。

于是我就想要删除nacos的持久化实例,在nacos为单节点的时候,使用命令删除服务,会直接将持久化服务删除(在服务已经下线的情况下),但是在集群模式的nacos,使用命令删除的时候,虽然会返回ok的响应,但是持久化的实例仍然是存在的。

解决方案:

nacos单节点删除持久化的实例

url = 'http://ip:8848/nacos/v1/ns/instance'
data = {
    'serviceName': serviceName,
    'groupName': groupName,
    'namespaceId': namespaceId,
    'ip': '10.1.85.11',
    'port': '5000',
    'weight': '1',
    'ephemeral': 'false'
}
username="nacosusername"
password="nacospassword"

response = requests.delete(url, data=data, auth=(username, password))
print(response.text)

nacos集群模式下,删除持久化实例,需要指定集群,参数更多一些

使用命令

curl -X DELETE 'http://ip:8848/nacos/v1/ns/instance?serviceName=serviceName&groupName=groupName&namespaceId=namespaceId&ip=ip&port=5000&clusterName=DEFAULT&ephemeral=False'

以上就是删除nacos持久化实例的解决方式

Logo

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

更多推荐