Подключитесь к службе кластера с виртуальной машины в Azure - PullRequest
0 голосов
/ 03 марта 2020

У меня есть виртуальная машина, созданная в Azure, и я хотел бы подключиться к службе mariadb (mariadb.mariadb.sv c .cluster.local из узлов кластера)

Возможно сделать что с использованием имени хоста или частного IP?

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Можно ли это сделать, используя имя хоста или частный IP-адрес?

Абсолютно!

В Kubernetes служба используется для связи с модулями.

Тип службы по умолчанию в Kubernetes - ClusterIP

ClusterIP - это внутренний IP-адрес, доступный только внутри кластера Kubernetes. ClusterIP позволяет приложениям, запущенным в модулях, получать доступ к сервису.

Чтобы открыть блоки вне кластера kubernetes, вам потребуется служба k8s NodePort или * 1021. * тип.

  • NodePort: Предоставляет Сервис для каждого IP-адреса узла в порту c (NodePort). Служба ClusterIP, к которой автоматически создается маршрут службы NodePort. Вы сможете связаться со службой NodePort из-за пределов кластера, запросив <NodeIP>:<NodePort>.

Обратите внимание, что необходимо иметь внешний IP-адрес, назначенный для один из узлов в кластере и правило брандмауэра, которое разрешает входящий трафик c на этот порт. В результате kubeproxy на узле Kubernetes (к которому подключен внешний IP-адрес) будет проксировать этот порт для модулей, выбранных службой.

  • LoadBalancer: предоставляет службу извне с помощью балансировщика нагрузки облачного провайдера. NodePort и ClusterIP Службы, для которых автоматически создаются внешние маршруты балансировки нагрузки.

В качестве альтернативы, если вам нужен доступ к HTTP / S (здесь это не так, но все же стоит упомянуть) можно использовать Ingress

Существует очень хорошая статья о работе со стручками Kubernetes извне кластера .

Надеюсь, это поможет.

0 голосов
/ 03 марта 2020

если ваша служба имеет тип clusterIP (по умолчанию), то вы не можете получить доступ к этой службе за пределами Kubernetes. Вам нужно изменить тип услуги на NodePort или clusterIP Я не уверен, kube-proxy может помочь здесь или нет. этот блог хорошо описывает все это

, учитывая, что у вас есть доступ к k8 за пределами, определенно вы можете получить доступ к модулям за пределами k8 с помощью

  1. kubectl exec получить оболочку работающего контейнера в k8s
  2. kubectl port-forward сопоставляет порт контейнера с вашим локальным портом.
...