使用K8S部署,我们的项目基于springcloud。我想知道,在K8S中,因为多节点部署会通过注册表的默认主机名,所以网关部署在A中,配置部署在B中。它们以前无法通过eureka相互访问。我更改为eureka.instance.prefer-ip-address: true
,但发现它们只能在同一主机上相互访问。他没有使用K8S的cluster-ip。我想知道如何在K8S的服务之间相互访问。
答案 0 :(得分:3)
在Activiti Cloud的7-201712-EA版本中,我们提供了一个使用在kubernetes中运行netflix库的服务的示例-可以参考稳定的github tags和docker映像。我们通过为每个组件创建Kubernetes Services并将组件添加到register with eureka using the k8s service name来实现这一目标。
要确保组件为eureka声明了正确的服务名称,我们在组件中set the eureka.instance.hostname,可以将其设置为in the Deployment yaml by specifying an environment variable或使用默认环境变量EUREKA_INSTANCE_HOSTNAME
。我们还通过为Pod中的Java应用程序和服务使用相同的端口来简化操作。同样,可以通过在Pod规范中设置端口并将SERVER_PORT
环境变量传递给spring boot应用程序来设置为匹配。
答案 1 :(得分:1)
检查spring-cloud-kubernetes项目