Назад | Перейти на главную страницу

Как правильно настроить балансировщик нагрузки с помощью 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 файл на моем компьютере это тоже нормально.

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

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