Чтобы открыть приложение k8s, вы можете использовать kubectl expose , чтобы создать службу типа NodePort :
kubectl expose pod <pod_name> --type NodePort --port 8080
или
kubectl expose deployment <deployment_name> --type NodePort --port 8080
тогда, когда вы перечисляете свои услуги, вы увидите:
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
<service_name> NodePort 10.99.147.24 <none> 8080:31208/TCP 3s
Обратите внимание на два порта в столбце PORT: 8080:31208/TCP
. Первый - это порт в кластере, а второй - порт узла. Итак, теперь вы можете получить доступ к своей службе с помощью nodePort, используя: <node-IP>:31208
извне кластера.
Существует еще один вариант, который применяется только в том случае, если вы работаете в облачной среде, и поддерживаются LoadBalancers (так что, если вы либо использование k8s в качестве сервисного решения или запуск автономных k8s в облаке с настроенным облачным провайдером). Вы можете создать службу типа LoadBalancer как показано ниже:
kubectl expose pod <pod_name> --type LoadBalacer --port 8080
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
<service_name> LoadBalancer 10.107.151.19 x.x.x.x 8080:31111/TCP 2s
и теперь использовать ВНЕШНИЙ IP-адрес для подключения к вашей службе: x.x.x.x:8080