Служба доступа на поддомен в Kubernetes
У меня есть следующие настройки:
- Частное облако OpenStack - доступен веб-интерфейс пользователя (Horizon)
(API ограничен, но, возможно, я мог бы получить доступ) - Я использовал CoreOS с настройкой одного мастера и трех узлов
- Ресурсы стандартизированы (по умолчанию OpenStack)
- Я следовал руководству по началу работы с CoreOS (т.е. я использую YAML по умолчанию для облачной конфигурации) на GitHub
Когда я читаю расширения, такие как Web UI (kube-ui) можно добавить как Add-On - который я добавил (только kube-ui).
Теперь, если я запускаю тест, такой как simple-nginx, я получаю следующий вывод:
создание стручков:
$ kubectl run my-nginx --image=nginx --replicas=2 --port=80
создание сервиса:
$ kubectl expose rc my-nginx --port=80 --type=LoadBalancer
NAME LABELS SELECTOR IP(S) PORT(S)
my-nginx run=my-nginx run=my-nginx 80/TCP
получить сервисную информацию:
$ kubectl describe service my-nginx
Name: my-nginx
Namespace: default
Labels: run=my-nginx
Selector: run=my-nginx
Type: LoadBalancer
IP: 10.100.161.90
Port: <unnamed> 80/TCP
NodePort: <unnamed> 31170/TCP
Endpoints: 10.244.19.2:80,10.244.44.3:80
Session Affinity: None
No events.
Я могу получить доступ к своему сервису с каждого (!) Внешнего IP-адреса узлов.
Мой вопрос сейчас заключается в следующем:
Как получить доступ к любому запущенному сервисному эфиру с субдомена и, следовательно, как я могу установить эту конфигурацию (например, у меня в качестве домена domain.com) или можно ли ее распечатать, по какому IP-адресу узла я должен получить доступ к своей службе (хотя у меня есть только две реплики (?!))?
Чтобы описать мои мысли более понятными, я имею в виду следующее:
- данный домен: domain.com (указывает на мастера)
- запустить сервис simple-nginx
- доступ к сервису можно получить через simple-nginx.domain.com
1 ответ
Поддерживает ли реализация вашего облачного провайдера OpenStack службы типа LoadBalancer?
Если это так, сервисный контроллер должен назначить IP-адрес входа или имя хоста для сервиса, которое в конечном итоге должно появиться в kubectl, описывающем вывод svc. Затем вы можете настроить внешний DNS для него.
Если нет, просто используйте type=NodePort, и вы все равно получите NodePort на каждом узле. Затем вы можете последовать совету в комментарии, чтобы создать ресурс Ingress, который может выполнять переназначение порта и хоста.