Так что я новичок в Kubernetes. Я пользователь Windows (извините) и установил Minikube. Я пытаюсь изучить Kubenetes с помощью MiniKube. Я создал очень простой REST API, который должен работать с открытым портом 5000 там, где есть простой маршрут / Hello / {somestring}

Я успешно создал POD / Deployment and Service для этого в MiniKube, как это

minikube.exe start --kubernetes-version="v1.9.0" --vm-driver="hyperv" --memory=1024 --hyperv-virtual-switch="Minikube Switch" --v=7 --alsologtostderr 
kubectl run simple-sswebapi-pod-v1 --replicas=1 --labels="run=sswebapi-pod-v1" --image=sachabarber/sswebapp:v1  --port=5000
kubectl expose deployment simple-sswebapi-pod-v1 --type=NodePort --name=simple-sswebapi-service
kubectl get services simple-sswebapi-service

Затем я могу получить URL-адрес и вставить его в свой браузер, например

minikube service simple-sswebapi-service --url 

Что дает мне этот URL

http://192.168.0.29:32246

Что я затем пробую в браузере на моем хосте, все хорошо, мой REST API работает, как ожидалось

enter image description here

Но из того, что я прочитал, я считаю, что я должен ТАКЖЕ использовать DNS-имя для службы, а не этот URL-адрес, возвращенный выше.

На самом деле я не уверен, что этот IP-адрес вернулся как часть команды --url, которую пытается сказать мне выше. Это не одна из тех, которые указаны для конечных точек службы, это для POD, судя по тому, что я могу сказать по панели инструментов.

Это сервис

enter image description here

Это POD

enter image description here

Разве для службы не должно быть доступного DNS-имени, которое я мог бы использовать вместо этого довольно хакерского способа получения URL-адреса из службы, которую я только что создал. Кто-нибудь, пожалуйста, дайте мне знать, что вообще представляет этот --url. Я потерялся здесь

Я проверил, что в MiniKube включено добавление DNS, см. kube-dns в списке ниже.

enter image description here

Как я уже сказал, это то же самое, что я вижу в сервисе на панели инструментов MiniKube.

enter image description here

Это смутило меня еще больше, поскольку я не могу связать что-либо из этого с ЕДИНСТВЕННЫМ IP-адресом, который, кажется, действительно работает для меня, который я взял, используя эту строку из службы.

.\minikube.exe service simple-sswebapi-service --url 

Этот IP-адрес вообще не отображается на панели управления.

Я думал, что служба должна быть доступна по DNS-имени примерно так:

simple-sswebapi-service.default.svc.cluster.local

Какой

  • Название службы
  • Пространство имен
  • svc, чтобы сообщить свою услугу

Для полноты картины я описываю сервис в командной строке.

enter image description here

Что мне не хватает?

Неправильно ли мой умственный настрой? Я тоже должен видеть эту службу, используя DNS на хосте? Или имя DNS доступно ТОЛЬКО внутри PODS?

1
sacha barber 27 Фев 2018 в 00:55

1 ответ

Лучший ответ

Kube-dns - это внутренний DNS. Вы можете использовать DNS-имя для службы только внутри кластера.

Поскольку ваш тип службы - Nodeport, вы можете подключиться к службе, используя IP-адрес машины (minikube) на этом порту.

2
tselvan 27 Фев 2018 в 17:08