Мне нужно связаться между двумя 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 позаботится о том, чтобы каждый подходил к соответствующим модулям, если на модулях правильно установлен селектор модулей.