связь между двумя POD в одном узле (миникуб) - PullRequest
0 голосов
/ 26 июня 2018

Мне нужно общаться между двумя POD в мини-кубе, которые выставлены в двух разных портах, но находятся в одном узле.

Например:

  • POD A использует порт 8080 и является целевой страницей.
  • Из POD A мы получаем доступ к POD B через гиперссылку, которая использует порт 8761.

Теперь в kubernetes он динамически назначает порт, например: POD A: 30069 и POD B: 30070

Проблема здесь : он не отображает автоматически порт kubernetes для POD B (30070) при доступе к POD B из POD A (30069). Вместо этого POD B пытается открыть порт 8761.

Извиняюсь, если мое описание сбивает с толку. Пожалуйста, не стесняйтесь перепроверить, если вы не можете ответить на мой вопрос.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 26 июня 2018

Мне нужно связаться между двумя POD в мини-кубе, которые выставлены в двух разных портах, но находятся в одном узле.

Исходя из того, что вы хотите, чтобы связь между модулями и что модули находятся на одном и том же узле, у вас может быть несколько (довольно сомнительных и хрупких) подходов, таких как воздействия hostname и nodePort. Чтобы больше соответствовать подходу и рекомендациям kubernetes, я бы посоветовал использовать Service вместо того, чтобы выставлять порты напрямую с уровня Pod.

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

kind: Service
apiVersion: v1
metadata:
  name: my-pod-b-service
spec:
  selector:
    app: MyPodBApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8761

Эта спецификация создаст новый объект Service с именем my-pod-b-service, который предназначен для TCP-порта 8761 на любом модуле с меткой app=MyPodBApp. При этом любой запрос, поступающий от модуля A для узла: my-pod-b-service и порта: 80, будет обслуживаться некоторым модулем B на порту 8761 (обратите внимание, что порт и targetPort могут совпадать, это всего лишь пример).

В качестве примечания, для стручка А у вас будет что-то вроде:

kind: Service
apiVersion: v1
metadata:
  name: my-pod-a-service
spec:
  selector:
    app: MyPodAApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080

Поскольку вы нацеливаетесь на сервисы, вы можете сопоставить один и тот же входящий порт (80) с обоими сервисами, и kubernetes позаботится о том, чтобы каждый подходил к соответствующим модулям, если на модулях правильно установлен селектор модулей.

...