Существуют различные способы доступа к сервису в kubernetes, вы можете предоставить свои сервисы через NodePort или LoadBalancer и получить доступ к нему вне кластера.
См. Официальную документацию о том, как получить доступ к услугам .
В официальном документе Kubernetes говорится, что:
Некоторые кластеры могут разрешать вамSSH к узлу в кластере.Оттуда вы можете получить доступ к службам кластера.Это нестандартный метод, и он будет работать на некоторых кластерах, но не на других.Браузеры и другие инструменты могут быть или не быть установлены.DNS кластера может не работать.
Таким образом, доступ к службе напрямую с другого узла зависит от типа используемого вами кластера Kubernetes.
РЕДАКТИРОВАТЬ:
Как только служба развернута в вашем кластере, вы сможете связаться со службой, используя ее имя, и Kube-DNS
ответит с правильным ClusterIP
, чтобы поговорить с вашими последними модулями.ClusterIP управляются правилами IPTables, созданными kube-proxy на Workers, которые преобразовывают NAT в ваш запрос к конечному IP-адресу контейнера.
Соглашение по именованию Kube-DNS - service.namespace.svc.cluster-domain.tld
, а домен кластера по умолчанию - cluster.local
.
Например, если вы хотите связаться со службой с именем mysql
в пространстве имен db
из любого пространства имен, вы можете просто поговорить с mysql.db.svc.cluster.local
.
Если это не работает, томожет быть некоторая проблема с kube-dns в вашем кластере.Надеюсь это поможет.
EDIT2: в ubuntu существует известная проблема с разрешением dns. Официальный документ Kubernetes гласит, что
В некоторых дистрибутивах Linux (например, Ubuntu) по умолчанию используется локальный преобразователь DNS (systemd-resolved).Systemd-resolved перемещает и заменяет /etc/resolv.conf на заглушку, которая может привести к фатальному циклу пересылки при разрешении имен на вышестоящих серверах.Это можно исправить вручную с помощью флага kreslet --resolv-conf, указывающего на правильный resolv.conf (в случае systemd-resolved это /run/systemd/resolve/resolv.conf).kubeadm 1.11 автоматически обнаруживает системное разрешение и соответствующим образом корректирует флаги kubelet.