Я пытаюсь настроить сервер Eureka и использовать ленту Netflix для балансировки нагрузки на стороне клиента, и я использовал шлюз API Spring Cloud для перенаправления запроса.API-шлюз работает нормально, когда я запускаю все микросервисы независимо, поскольку приложение Java и лента выполняют балансировку нагрузки на стороне клиента.
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("tracker", r -> r.path("/**")
.uri("lb://tracker") // Client side load balancing using Netflix Ribbon
)
.build();
}
и в моем локальном API Eureka Server отображается следующее:
Экземпляры, зарегистрированные в настоящее время в Eureka
Но когда я пытаюсь организовать это с помощью Kubernetes , каждый микросервис не может правильно зарегистрировать их на сервере Eureka, из-за чего шлюз API не может перенаправить запрос.
Это экран Eurekaкогда я запускаю Tracker Microservice в локальной сети.
Я хочу знать, нужна ли мне какая-либо дополнительная конфигурация для того, чтобы эта инфраструктура работала или
Прикрепление файла workloads.yaml
и services.yaml
для справки.
https://github.com/neerajjain92/vehicle-position-simulator/tree/master/kubernetes
Фрагмент из workloads.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: eureka
spec:
selector:
matchLabels:
app: eureka
replicas: 1
template:
metadata:
labels:
app: eureka
spec:
containers:
- name: eureka
image: neerajjain/eureka
Отрывок из services.yaml
apiVersion: v1
kind: Service
metadata:
name: gps-tracker-eureka-server
spec:
selector:
app: eureka
ports:
- port: 8761
nodePort: 30040
type: NodePort