Прежде всего стоит отметить, что обычно вы не подключаетесь к отдельным 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
Надеюсь, это поможет.