Можно ли это сделать, используя имя хоста или частный IP-адрес?
Абсолютно!
В Kubernetes служба используется для связи с модулями.
Тип службы по умолчанию в Kubernetes - ClusterIP
ClusterIP - это внутренний IP-адрес, доступный только внутри кластера Kubernetes. ClusterIP позволяет приложениям, запущенным в модулях, получать доступ к сервису.
Чтобы открыть блоки вне кластера kubernetes, вам потребуется служба k8s NodePort
или * 1021. * тип.
- NodePort: Предоставляет Сервис для каждого IP-адреса узла в порту c (NodePort). Служба
ClusterIP
, к которой автоматически создается маршрут службы NodePort
. Вы сможете связаться со службой NodePort из-за пределов кластера, запросив <NodeIP>:<NodePort>
.
Обратите внимание, что необходимо иметь внешний IP-адрес, назначенный для один из узлов в кластере и правило брандмауэра, которое разрешает входящий трафик c на этот порт. В результате kubeproxy на узле Kubernetes (к которому подключен внешний IP-адрес) будет проксировать этот порт для модулей, выбранных службой.
- LoadBalancer: предоставляет службу извне с помощью балансировщика нагрузки облачного провайдера.
NodePort
и ClusterIP
Службы, для которых автоматически создаются внешние маршруты балансировки нагрузки.
В качестве альтернативы, если вам нужен доступ к HTTP / S (здесь это не так, но все же стоит упомянуть) можно использовать Ingress
Существует очень хорошая статья о работе со стручками Kubernetes извне кластера .
Надеюсь, это поможет.