Назад | Перейти на главную страницу

Доступ к сервису Kubernetes с использованием имени хоста / IP-адреса

Моя конечная цель - получить доступ к открытым сервисам 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-адресе хоста.

Вот пример:

  1. Разоблачить Ingress за пределами Kubernetes:

    kind: Service
    apiVersion: v1
    metadata:
      name: ingress-nginx
    spec:
      type: NodePort
      selector:
        app: ingress-nginx
      ports:
        - port: 80
          nodePort: 31080
          name: http
    
  2. Разоблачить 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