GKE, кажется, блокирует прямой доступ к узлам.
GCP позволяет создавать правила FW, которые разрешают входящий трафик c либо «Все экземпляры в сети», либо «Указано». Целевые теги / сервисная учетная запись »в вашей сети VP C.
Правила являются постоянными , если не указано иное в политиках организации.
Внешний IP-адрес узла можно проверить в Cloud Console -> Compute Engine -> VM. Экземпляры или с kubectl get nodes -o wide
.
Я запускаю GKE (управляемый k8s) и могу получить доступ ко всем моим активам извне. Я открыл все необходимые порты в моей настройке. ниже приведен самый быстрый пример.
Ниже вы можете найти мои настройки:
$ kubectl get nodes -o wide
NAME AGE VERSION INTERNAL-IP EXTERNAL-IP
gke--mnnv 43d v1.14.10-gke.27 10.156.0.11 34.89.x.x
gke--nw9v 43d v1.14.10-gke.27 10.156.0.12 35.246.x.x
kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) SELECTOR
knp-np NodePort 10.0.11.113 <none> 8180:30008/TCP 8180:30009/TCP app=server-go
$ curl 35.246.x.x:30008/test
Hello from ServerGo. You requested: /test
Вот почему, похоже, будет достаточно связки NodePort
типа Services
(каждая обслуживает запросы для определенных selector
)
Если по какой-то причине невозможно настроить правила FW, чтобы разрешить traffi c непосредственно для ваших узлов, можно настроить GCP TCP LoadBalancer.
Cloud Console -> Сетевые службы -> Балансировка нагрузки -> Создать LB -> Балансировка нагрузки TCP.
Там вы можете выбрать свои узлы GKE (или пул узлов) в качестве «Backend» и укажите все необходимые порты для «внешнего интерфейса». Для внешнего интерфейса вы можете зарезервировать IP-адрес Stati c прямо во время настройки и указать диапазон «Порт» в виде двух номеров портов, разделенных знаком da sh (при условии, что у вас есть несколько портов для пересылки в ваш пул узлов). Кроме того, при необходимости вы можете создать несколько «Интерфейсов».
Надеюсь, это поможет.