Как я могу определить 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.