Pod в кластере gcloud kubernetes не доступен из Интернета.Доступ из kubernetes или облачной оболочки работает нормально.
Существует несколько способов сделать стручок доступным снаружи кластера kubernetes.Я пробовал три разных способа.
Мой кластер kubernetes не является частным, это означает, что команда
kubectl get nodes - o wide
имеет внешний IP-адрес.IP доступен снаружи проекта gc.
Я создал модуль с использованием yaml модуля Pod, а не с помощью deployConfig.Модуль имеет два порта контейнера:
ports:
- containerPort: 8500
- containerPort: 8501
Модуль работает. Порты открыты внутри контейнера.Теперь я создал сервисы по-разному.
Создание разных сервисов.Служба и модуль подключены через селектор
app=myapp
1 NodePort: Использование внешнего IP-адреса из кластера kubernetes.Я создал сервис из типа NodePort.Доступ должен работать через кластер IP:
2 LoadBalancer: создание службы с типом Loadbalanacer создает внешний IP-адрес для службы.
kubectl get service -o wide
kubectl expose pod myapp --port 8500 --target-port=8500 --type=Loadbalancer
Я получил второй внешний IP-адрес.Доступ извне через «ip-адрес: порт» не работает
3 HostPort: порт контейнера будет открыт для внешней сети по адресу:, где hostIP - это IP-адрес узла Kubernetes, гдеконтейнер работает, а hostPort - это порт, запрошенный пользователем.
Использование этого учебного пособия: http://alesnosek.com/blog/2017/02/14/accessing-kubernetes-pods-from-outside-of-the-cluster/
Единственное, что мне помогло, - это использовать порт 80. Я использовал порт 80 дляконечная точка rest, но у меня есть 2 конечных точки rest и grpc, и оба должны быть предоставлены.
В целом я создал правила брандмауэра для портов, которые использовал:
gcloud compute firewall-rules create MY-RULE \
--allow tcp:8500-8501
У меня ничего не получалось.Теперь я верю, что мне чего-то не хватает.Заранее спасибо.
С наилучшими пожеланиями, Джерн