Как я могу определить IP для Kong на кластере Kubernetes на машинах RHEL? - PullRequest
0 голосов
/ 07 февраля 2020

Во-первых, позвольте мне показать сущности kubernetes из пространства имен с именем "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 ]

0 голосов
/ 11 февраля 2020

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

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

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

Чтобы проверить, является ли сервер, к которому вы подключены, частью кластера, введите kubectl get nodes -owide e, попробуйте найти 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 вашего локального хоста.

Ссылки:

Типы услуг

MetalLB

port-forward

0 голосов
/ 07 февраля 2020

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

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

Если вы используете Prem, тогда вы можете использовать сервис Nodeport Type.

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

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

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

...