Моя конечная цель - получить доступ к открытым сервисам Kubernetes, работающим на моем хосте, с другого хоста.
Я занимаюсь разработкой в minikube и пробовал использовать контроллер Ingress. Я могу заставить это работать на самом устройстве в соответствии с указаниями здесь Настройка ingress на minikube. Однако я хочу иметь доступ к моим открытым службам с другого компьютера, как в curl http://host.ip:8000
, где host.ip - это фактический общедоступный IP-адрес устройства, а не IP-адрес виртуальной машины minikube или внутренней сети, созданной на устройстве; и порт 8000
- это открытый сервис Kubernetes.
Это не похоже на такой странный крайний случай, поэтому я удивлен, что не смог найти там никакой полезной информации о том, как **** EASILY **** это делает.
Вот мой местный работающий входной контроллер, для полноты:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nlp-adapt
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
backend:
serviceName: default-http-backend
servicePort: 8000
rules:
- host: myminikube.info
http:
paths:
- path: /
backend:
serviceName: echoserver
servicePort: 8080
- host: test.nlp
http:
paths:
- path: /nlptab
backend:
serviceName: nlptab
servicePort: 8000
Обычно Minikube запускается внутри виртуальной машины. Кроме того, необходимо предоставить доступ к порту за пределами виртуальной машины, чтобы сделать его доступным за пределами Kubernetes, чтобы приложение было доступно на IP-адресе хоста.
Вот пример:
Разоблачить Ingress за пределами Kubernetes:
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
spec:
type: NodePort
selector:
app: ingress-nginx
ports:
- port: 80
nodePort: 31080
name: http
Разоблачить 31080
порт вне виртуальной машины:
ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -L 31080:0.0.0.0:8000
После этого приложение, предоставленное Ingress, будет доступно на http://host.ip:8000
Это не единственный способ раскрыть приложение. Например, при использовании VirtualBox в качестве гипервизора вы также можете использовать функцию переадресации портов VirtualBox NAT, чтобы разрешить доступ к службам, предоставляемым через NodePorts извне. Как упоминалось в ссылка на сайт предоставлено @horcle_buzz