--昨夜西风凋碧树,独上高楼,望尽天涯路
-
错误描述
当采用docker+Spring Cloud+Kubernetes时,发现服务无法像Kubernetes注册,错误如下:
服务会采用Pod name向eureka注册
-
原因
由于eureka的默认注册方式为:采用hostname注册,当讲微服务通过Kubernetes发布的时候,默认采用pod name为hostname,所以导致服务无法注册
-
解决方案
修改eureka和config的配置文件(此处以eureka和config为例):
eureka中增加下面配置:
eureka.instance.perferIpAddress:设置为true表示开启Ip注册的方式
eureka.instance.instanceId:设置注册的格式,${spring.cloud.client.ipAddress}是固定的哦,表示该服务的ip
eureka.instance.hostname:设置eureka实例的主机名(这个必须与kubernetes service中的name相同)
config中增加如下配置:
设置eureka.client.service-url.defaultZone中注册的ip为eureka.instance.hostname即kubernetes的service name
kubernetes中,eureka和config的配置文件分别如下: