Как я могу определить IP для Kong on Kubernetes кластера на машинах RHEL?

Во-первых, позвольте мне показать сущности кубернетов из пространства имён kong:

[projadmin@VOFDGSTP1 ~]$ kubectl get all -n kong
NAME                               READY   STATUS    RESTARTS   AGE
pod/ingress-kong-5d997d864-wsmsw   2/2     Running   2          13d

NAME                              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
service/kong-proxy                LoadBalancer   10.100.200.3     <pending>     80:31180/TCP,443:31315/TCP   13d
service/kong-validation-webhook   ClusterIP      10.100.200.175   <none>        443/TCP                      13d

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-kong   1/1     1            1           13d

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-kong-5d997d864   1         1         1       13d

Когда я пытаюсь проверить связь с IP-адресами сверху, я получаю ошибку тайм-аута.

[projadmin@VOFDGSTP1 ~]$ curl -i 10.100.200.175
curl: (7) Failed connect to 10.100.200.175:80; Connection timed out
[projadmin@VOFDGSTP1 ~]$ curl -i 10.100.200.176
curl: (7) Failed connect to 10.100.200.176:80; Connection timed out
[projadmin@VOFDGSTP1 ~]$ curl -i 10.100.200.3
curl: (7) Failed connect to 10.100.200.3:80; Connection timed out

2 ответа

Судя по информации, которой вы поделились, я могу предположить, что вы пытаетесь запустить команду вне кластера.

Если вы это сделаете, он не будет работать, потому что вы не можете добраться до ClusterIP сервисы вне кластера.

ClusterIP: Предоставляет Службу на внутреннем IP-адресе кластера. Выбор этого значения делает Сервис доступным только внутри кластера. Это по умолчаниюServiceType.

Чтобы проверить, является ли подключенный сервер частью кластера, введите kubectl get nodes -owide Попытайтесь найти ip в списке.

Я вижу твою службу service/kong-proxy это с EXTERNAL-IP: <pending>, вероятно, это происходит из-за того, что вы пытаетесь использовать установку Kubernetes с нуля, в этом случае вам нужно использовать MetalLB, чтобы сделать свойLoadBalancer конфигурация рабочая.

Альтернативой для тестирования вашего сервиса является использование kubectl port-foward, это отобразит ваш сервис на localhost, и вы сможете получить доступ по http://localhost:8080/. Пример:

kubectl port-forward svc/kong-proxy -n kong 8080:80

Эта команда отобразит вашу службу на порт 8080 вашего локального хоста.

Ссылки:

Типы услуг

МеталлЛБ

порт вперед

IP-адреса кластера недоступны извне кластера и с хост-компьютеров, на которых развернут кубернет. Вам необходимо использовать службу типа Load Balancer или Nodeport для доступа к ней извне кластера или формирования хост-компьютеров.

Глядя на ожидающий статус для внешнего IP-адреса службы типа LoadBalancer, кажется, что вы не развертываете кубернеты у поставщиков общедоступного облака. Сервис типа LoadBalancer работает только у поддерживаемых облачных провайдеров (например, AWS, GCP).

Если вы работаете в локальной сети, то вы можете использовать службу Nodeport Type.

Из документации Kong о том, когда использовать Nodeport при развертывании Kong.

Если ваш кластер Kubernetes работает в облачной среде, где балансировщики нагрузки могут быть относительно легко подготовлены, рекомендуется использовать службу типа LoadBalancer, чтобы предоставить Kong доступ внешнему миру. Для правильной работы Ingress Controller также требуется, чтобы использовался балансировщик нагрузки L4 (или TCP), а не L7 (HTTP(s)).

Если ваш кластер Kubernetes не поддерживает службу типа LoadBalancer, то можно использовать службу типа NodePort.

Другие вопросы по тегам