Почему плагин nginx для входа в Minikube работает, но hostPort не работает ни для какого другого плагина? - PullRequest
1 голос
/ 23 сентября 2019

В minikube есть входной плагин nginx, который использует hostPort 80 и 443. Видимо трафик извне может нормально доходить до этих портов.Однако, если вы создаете модуль с контейнером с hostPort: 9999, например telnet $(minikube ip) 9999, то получите следующий результат:

Trying 192.168.99.165...
telnet: connect to address 192.168.99.165: Connection refused
telnet: Unable to connect to remote host

Контроллер входа nginx совершает какую-то особую магию?Если так, то что такое волшебство, которое я тоже могу использовать?

Пожалуйста, не отвечайте об использовании NodePort.

1 Ответ

1 голос
/ 23 сентября 2019

Особой магии нет.Я подозреваю, что вы получаете этот ответ telnet, потому что ничего не слушает порт 9999 в контейнере, на котором установлено hostPort: 9999.

Запустите minikube ssh и посмотрите на netstat -nlt, и вы увидите свой порт9999 там.Попробуйте запустить реальный сервис, прослушивающий открытый хост-порт, и он должен работать, например,

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: redis
  name: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      run: redis
  template:
    metadata:
      labels:
        run: redis
    spec:
      containers:
      - image: redis
        imagePullPolicy: Always
        name: redis
        ports:
        - containerPort: 6379
          hostPort: 6379
          protocol: TCP

Из моего терминала:

> telnet $(minikube ip) 6379
Trying 192.168.99.189...
Connected to 192.168.99.189.
Escape character is '^]'.

Если есть , то что-то прослушиваетпорт 9999, то может возникнуть проблема с тем, как Kubernetes настраивает прокси между хостом и контейнером.Вы можете найти процесс docker-proxy, чтобы проверить, что:

$ ps aux | grep docker-proxy
root      3579  0.0  0.0   3668  1768 ?        Sl   14:43   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 10000 -container-ip 172.17.0.2 -container-port 10000
root     19862  0.0  0.0   9240   476 pts/1    S+   16:21   0:00 grep docker-proxy
root     23466  0.0  0.0   3668  1768 ?        Sl   15:20   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 18080 -container-ip 172.17.0.9 -container-port 18080
root     23480  0.0  0.0   3668  1768 ?        Sl   15:20   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.17.0.9 -container-port 443
root     23494  0.0  0.0   3668  1676 ?        Sl   15:20   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.17.0.9 -container-port 80
root     25840  0.0  0.0   3668  1768 ?        Sl   15:24   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9999 -container-ip 172.17.0.10 -container-port 9999
$ 
...