minikube, как подключиться с одного модуля на другой, используя имена хостов? - PullRequest
0 голосов
/ 22 апреля 2020

Я запускаю кластер в пространстве имен по умолчанию со всеми модулями в состоянии Running.

У меня проблема, я пытаюсь перевести lnet из одного модуля в другой модуль, используя имя хоста модуля 'abcd -7988b76669-lgp8l ', но я не могу подключиться. хотя это работает, если я использую внутренние IP-адреса стручков. Почему днс не разрешается?

Я смотрел на

kubectl get po -n kube-system
NAME                          READY   STATUS    RESTARTS   AGE
coredns-6955765f44-5lpfd      1/1     Running   0          12h
coredns-6955765f44-9cvnb      1/1     Running   0          12h

У кого-нибудь есть идеи, как подключиться от одного модуля к другому с помощью разрешения имени хоста?

1 Ответ

1 голос
/ 22 апреля 2020

Прежде всего стоит отметить, что обычно вы не подключаетесь к отдельным Pods, используя их доменные имена. Одной из веских причин этого является их эфемерность. Обратите внимание, что обычно вы создаете не простой Pods, а контроллер, такой как Deployment , который управляет вашим Pods и гарантирует, что указанное c число Pods определенного вида постоянно работает и работает , Pods может часто удаляться и создаваться заново, поэтому вы никогда не должны полагаться на их доменные имена в своих приложениях. Обычно вы предоставляете их другим приложениям, например, работающим в других Pods через Сервис . Хотя использование доменного имени invididual Pod не рекомендуется, оно все же возможно. Вы можете сделать это просто для развлечения или в целях обучения / эксперимента.

Как уже упоминалось @David, вы бы очень помогли нам дать вам исчерпывающий ответ, если вы отредактируете свой вопрос и предоставите несколько важных деталей. , показывая то, что вы уже пробовали, например, определения Pods и Services в формате yaml.

Буквально отвечая на ваш вопрос, опубликованный в заголовке:

minikube как подключиться из одного модуля к другому, используя имена хостов?

Вы не сможете подключиться к Pod, просто используя имя хоста . Например, вы можете ping ваш бэкэнд Pods, выставленный через ClusterIP Service, просто пропинговать <service-name> (при условии, что он совпадает с namespace с Pod вашим пингом).

Имейте в виду, однако, что он не работает для Pods - ни имена Pods, ни их имена хостов не могут быть разрешены кластером DNS .

Вы должны иметь возможность подключиться к отдельному Pod, используя его полностью квалифицированное доменное имя (FQDN) , если вы все настроили правильно. Просто убедитесь, что вы не пропустили ни одного шага, описанного здесь :

Убедитесь, что вы создали простую службу безголового доступа , которая может выглядеть следующим образом это :

apiVersion: v1
kind: Service
metadata:
  name: default-subdomain
spec:
  selector:
    name: busybox
  clusterIP: None

Убедитесь, что в ваших Pods определениях отсутствуют важные детали :

apiVersion: v1
kind: Pod
metadata:
  name: busybox1
  labels:
    name: busybox
spec:
  hostname: busybox-1
  subdomain: default-subdomain
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox
---
apiVersion: v1
kind: Pod
metadata:
  name: busybox2
  labels:
    name: busybox
spec:
  hostname: busybox-2
  subdomain: default-subdomain
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    name: busybox

Говоря о важных деталях, обратите особое внимание на то, что вы правильно определили hostname и subdomain в спецификации Pod и что labels, используемый Pods, соответствует меткам, используемым Service selector.

После того, как все настроено правильно, вы сможете подключиться к Pod busybox1 и ping Pod busybox2 , используя FQDN как в примере ниже:

$ kubectl exec -ti busybox1 -- /bin/sh
/ # ping busybox-2.default-subdomain.default.svc.cluster.local
PING busybox-2.default-subdomain.default.svc.cluster.local (10.16.0.109): 56 data bytes
64 bytes from 10.16.0.109: seq=0 ttl=64 time=0.051 ms
64 bytes from 10.16.0.109: seq=1 ttl=64 time=0.082 ms
64 bytes from 10.16.0.109: seq=2 ttl=64 time=0.081 ms

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...