Балансировка нагрузки Kubernetes на цифровом океане - PullRequest
0 голосов
/ 05 марта 2020

Мне нужно иметь возможность периодически выставлять мой экземпляр rabbitmq для внешнего мира.

Он работает в DigitalOcean в кластере kuberentes 1.16 с кучей других сервисов. Одним из сервисов является веб-сервер. Балансировщик нагрузки на этом работает просто отлично. Когда я пытаюсь использовать тот же конфиг (очевидно, с разными портами) для моего rabbitmq, я не могу заставить его работать.

Другие сервисы в кластере могут нормально общаться с rabbitmq. Я тоже могу, если я kubectl port-forward service/rabbitmq 5672 15672 15671 и доступ к нему локально.

Если я попытаюсь получить доступ к нему по IP-адресу c, соединение мгновенно разорвется.

$ telnet 64.225.xx.xx 15672
Trying 64.225.xx.xx...
Connected to 64.225.xx.xx.
Escape character is '^]'.
Connection closed by foreign host.

Конфигурация полностью:

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    db: rabbitmq
spec:
  ports:
  - port: 15671
    targetPort: 15671
    name: '15671'
  - port: 15672
    targetPort: 15672
    name: http
    protocol: TCP
  - port: 5672
    targetPort: 5672
    name: '5672'
  selector:
    db: rabbitmq
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq-deployment
  labels:
    db: rabbitmq
spec:
  selector:
    matchLabels:
      db: rabbitmq
  replicas: 1
  template:
    metadata:
      labels:
        db: rabbitmq
    spec:
      containers:
        - name: rabbitmq
          image: rabbitmq:3-management
          ports:
          - containerPort: 15671
          - containerPort: 15672
          - containerPort: 5672
          env:
          - name: GET_HOSTS_FROM
            value: dns
          - name: RABBITMQ_DEFAULT_USER
            value: "***"
          - name: RABBITMQ_DEFAULT_PASS
            value: "***"
          - name: RABBITMQ_DEFAULT_VHOST
            value: "/"

1 Ответ

0 голосов
/ 05 марта 2020

Так что по какой-то причине (я неправильно их маркирую) мне удалось сделать внешнюю конфигурацию своей собственной службой. Другими словами, эта настройка работает:

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    db: rabbitmq-svc
spec:
  ports:
  - port: 15671
    targetPort: 15671
    name: '15671'
  - port: 15672
    targetPort: 15672
    name: '15672'
    protocol: TCP
  - port: 5672
    targetPort: 5672
    name: '5672'
  selector:
    db: rabbitmq
---
apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-external
  labels:
    svc: rabbitmq-external
spec:
  ports:
  - port: 15672
    targetPort: 15672
    name: 'http'
    protocol: TCP
  - port: 5672
    targetPort: 5672
    name: '5672'
    protocol: TCP
  selector:
    db: rabbitmq
  type: LoadBalancer
---
...

Не знаю, почему, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...