下线服务:

curl -X PUT "http://ip:port/eureka/apps/{application}/{instance}/status?value=OUT_OF_SERVICE"
curl -X PUT "http://ip:port/eureka/apps/{USER-WEB-SERVICE}/{172.17.16.100:9461}/status?value=OUT_OF_SERVICE"

image.png

上线服务:

curl -X PUT "http://ip:port/eureka/apps/{application}/{instance}/status?value=UP"
curl -X PUT "http://ip:port/eureka/apps/{USER-WEB-SERVICE}/{172.17.16.100:9461}/status?value=UP"

删除服务:貌似不管用

curl -X DELETE http://ip:port/eureka/apps/{USER-WEB-SERVICE}/{172.17.16.100:9461}

在k8s中可以使用如下两种方法来下线服务:

blog.csdn.net/qq_31960623/article/details/119865937
cnblogs.com/fengjian2016/p/15205477.html
jishuin.proginn.com/p/763bfbd676e9


通过请求接口来让服务主动下线:

lifecycle:
  preStop:
    httpGet:
      path: /unhealthy
      port: http

或者执行脚本来让服务主动下线:

lifecycle:
  preStop:
    exec:
      command: ['/bin/sh','-c','/tmp/preStop.sh']

preStop.sh:这是nacos的eureka同理。

#!/bin/sh

# shell脚本作用
# 在更新pod时先执行这个脚本,把pod应用从nacos中下线,然后再关闭pod

#echo "输出必要的环境变量"
#echo "${NACOS_SERVER_ADDR}"
#echo "${PODNAME}"
#echo "${PODIP}"
#echo "${NACOS_NAMESPACE}"

result=$(curl -X PUT "http://${NACOS_SERVER_ADDR}/nacos/v1/ns/instance?serviceName=${PODNAME}&clusterName=DEFAULT&groupName=DEFAULT_GROUP&ip=${PODIP}&port=8093&enabled=false&namespaceId=${NACOS_NAMESPACE}")

echo "输出curl执行结果result:${result}"

if [ ${result} == "ok" ]; then
  echo "执行成功"
  sleep 45
  exit 0
else
  echo "执行失败"
  exit 1
fi

如何在Pod中获取PodIP:

https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/environment-variable-expose-pod-information/