Подключение к внутренней службе kubernetes из локальной сети

#kubernetes

#kubernetes

Вопрос:

можно подключиться к внутренней службе kubernetes из локальной сети? например, у меня есть виртуальная машина вне кластера kubernetes, но в той же сети, что и кластер kubernetes (я могу пинговать IP-адрес частного узла с моей виртуальной машины), и с этой виртуальной машины я хочу подключиться к внутренней службе kubernetes, например http://sample-service.default.svc.cluster.local из локальной сети

Я пытался следовать этому руководству https://blog.heptio.com/configuring-your-linux-host-to-resolve-a-local-kubernetes-clusters-service-urls-a8c7bdb212a7 но все равно не работает

Ответ №1:

Да, это возможно, вам нужно изменить тип вашей службы на NodePort : https://kubernetes.io/docs/concepts/services-networking/service/#nodeport . Тогда ваша служба будет доступна с любого из ваших рабочих узлов Kubernetes, используя его IP-адрес и NodePort (> 30000), отображаемый командой ниже.

Например:

 $ kubectl get svc parse-server 
NAME           TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
parse-server   NodePort   10.96.139.142   <none>        1337:31013/TCP   17h

$ kubectl get nodes -o wide
NAME                 STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                                     KERNEL-VERSION    CONTAINER-RUNTIME
...
kind-worker2         Ready    <none>   42h   v1.19.1   172.18.0.2    <none>        Ubuntu Groovy Gorilla (development branch)   4.15.0-1101-oem   containerd://1.4.0
 

Затем сервис parse-server доступен из локальной сети с помощью:

 $ curl http://172.18.0.2:31013
<!DOCTYPE html>
<html lang="en">
...
 

NodePort это самый простой способ предоставить сервис за пределами кластера Kubernetes, но если вам нужны более продвинутые функции, такие как маршрутизация по URL-адресу или имени хоста, вам необходимо исследовать при входе: https://kubernetes.io/docs/concepts/services-networking/ingress /.

Комментарии:

1. Я думаю настроить прокси-сервер вне моего кластера, например: если у меня есть 2 узла, какой IP-адрес узла я должен использовать?

2. Ваш прокси-сервер, назовем его балансировщиком нагрузки, должен перенаправлять на оба IP-адреса, используя, например, алгоритм циклического перебора.