Как правильно настроить балансировщик нагрузки с помощью Digital Ocean с Kubernetes?

Я пытаюсь развернуть свое приложение в Digital Ocean с помощью Kubernetes, и я просмотрел их руководство, но оно не работает. Это мой манифест:

---
kind: Service
apiVersion: v1
metadata:
  name: my-app-load-balancer
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: my-app
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: addamsson/my-app:v6
          ports:
          - containerPort: 80

Что происходит, так это то, что вместо маршрутизации на порт 80 капли он перенаправляет на случайный порт:

my-app-load-balancer   LoadBalancer   10.245.109.64   206.189.247.38   80:32225/TCP   4m1s

Что я делаю не так?

Я попробовал свой приложение локально с помощью Docker, и оно работает, и если я проверю журналы своего модуля, оно также выглядит хорошо:

2020-02-25 14:15:30.105 [main] INFO  Application - Responding at http://127.0.0.1:80

Изменить:

Я пробовал его с изображением, которое, как я знаю, должно работать: springio / gs-spring-boot -docker и он работает. Но я не понимаю, почему это не работает с моим изображением. Если я проверю журналы, все будет хорошо. Есть ли у меня проблема в моем Dockerfile ?

FROM openjdk:8-jre-alpine
RUN mkdir /app
COPY ./build/libs/my-app.jar /app/my-app.jar
WORKDIR /app
ENTRYPOINT ["java", "-jar", "my-app.jar"]

Если я запустил файл .jar на своем компьютере, это тоже нормально.

0
задан 25 February 2020 в 22:11
1 ответ

Это правильная конфигурация. Первый порт, показанный в выходных данных, - это значение порта , указанного в манифесте службы. Это порт, на котором служба доступна внутри кластера.

Второй порт - a NodePort - порт на каждом узле, на котором эта служба доступна, если тип службы - ] NodePort или LoadBalancer . Обычно он назначается системой из диапазона 30000-32767 . Этот порт можно выбрать вручную, но вы должны учитывать возможную коллизию портов. Это порт, на котором служба доступна на узле. Каждый узел передает этот порт (одинаковый номер на каждом узле) в вашу службу.

1
ответ дан 26 February 2020 в 00:36

Теги

Похожие вопросы