☸️ Port, TargetPort и NodePort в Kubernetes

by itisgood

В Кубере есть несколько полей для объявления портов.

Это краткий обзор каждого типа и того, что каждый из них означает в вашем YAML Kubernetes.

Список портов Пода

Этот массив, определенный в pod.spec.containers[].ports, предоставляет список портов, которые предоставляются контейнерам.
Вам действительно не нужно указывать этот список – даже если он пуст, пока ваши контейнеры прослушивают порт, они все равно будут доступны для доступа по сети.
Это просто обеспечивает некоторую дополнительную информацию для Kubernetes.

Список портов Сервиса

Список service.spec.ports службы определяет, какие запросы к портам службы перенаправляются на порты на его подах.
Успешный запрос может быть сделан из-за пределов кластера на IP-адрес узла и на nodePort, перенаправлен на port  сервиса и получен подом на  targetPort
Пример yaml сервиса:
kind: Service
apiVersion: v1
metadata:
name: port-example-svc
spec:
# Make the service externally visible via the node
type: NodePort

ports:
# Which port on the node is the service available through?
- nodePort: 31234

# Inside the cluster, what port does the service expose?
- port: 8080

# Which port do pods selected by this service expose?
- targetPort:

selector:
# ... 

nodePort

Этот параметр делает службу видимой вне кластера Kubernetes по IP-адресу узла и номеру порта, объявленному в этом свойстве.
Служба также должна иметь тип NodePort (если это поле не указано, Kubernetes автоматически выделит порт узла).

port

Выставьте службу на указанном порту внутри кластера.
То есть служба становится видимой на этом порту и будет отправлять запросы, сделанные на этот порт, на модули, выбранные службой.

targetPort

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

You may also like

Leave a Comment