Kubernetes minikube, не может предоставить сервис в общедоступном диапазоне IP

Так что я играл с Минкубе.

Мне удалось развернуть простой контейнер фляги на Python:

PS C:\Users\Will> kubectl run test-flask-deploy --image 
192.168.1.201:5000/test_flask:1 
deployment "test-flask-deploy" created

Затем мне также удалось представить развертывание как услугу:

PS C:\Users\Will> kubectl expose deployment/test-flask-deploy --
type="NodePort" --port 8080
service "test-flask-deploy" exposed

На панели инструментов я вижу, что у службы есть IP-адрес кластера: 10.0.0.132.

Я получаю доступ к панели управления по адресу 192.168.xxx.xxx, поэтому я надеюсь, что смогу открыть службу на этом внешнем IP-адресе.

Есть идеи, как я это делаю?

Отдельный и чуть менее важный вопрос: у меня minikube общается с реестром докеров в моей сети. Если я развертываю образ (который еще не был извлечен локально в minikube), развертывание завершается ошибкой, но когда я запускаю команду docker pull на minikube локально, развертывание завершается успешно. Таким образом, minikube может извлекать образы докеров, но когда я развертываю образ, доступный через реестр, но не извлеченный локально, он терпит неудачу. Есть предположения?

РЕДАКТИРОВАТЬ: Подробнее в ответ на комментарий:

PS C:\Users\Will> kubectl describe pod test-flask-deploy
Name:           test-flask-deploy-1049547027-rgf7d
Namespace:      default
Node:           minikube/192.168.99.100
Start Time:     Sat, 07 Oct 2017 10:19:58 +0100
Labels:         pod-template-hash=1049547027
                run=test-flask-deploy
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"test-flask-deploy-1049547027","uid":"b06a14b8-ab40-11e7-9714-080...
Status:         Running
IP:             172.17.0.4
Created By:     ReplicaSet/test-flask-deploy-1049547027
Controlled By:  ReplicaSet/test-flask-deploy-1049547027
Containers:
  test-flask-deploy:
    Container ID:       docker://577e339ce680bc5dd9388293f1f1ea62be59a6acc25be22889310761222c760f
    Image:              192.168.1.201:5000/test_flask:1
    Image ID:           docker-pullable://192.168.1.201:5000/test_flask@sha256:d303ed635888394f69223cc0a66c5778444fd3636dfcde42295fd512be948898
    Port:               <none>
    State:              Running
      Started:          Sat, 07 Oct 2017 10:19:59 +0100
    Ready:              True
    Restart Count:      0
    Environment:        <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-5rrpm (ro)
Conditions:
  Type          Status
  Initialized   True
  Ready         True
  PodScheduled  True
Volumes:
  default-token-5rrpm:
    Type:       Secret (a volume populated by a Secret)
    SecretName: default-token-5rrpm
    Optional:   false
QoS Class:      BestEffort
Node-Selectors: <none>
Tolerations:    <none>
Events:         <none>

person Xerphiel    schedule 07.10.2017    source источник
comment
Что касается второй части вашего вопроса, можете ли вы kubectl describe pod test-flask-deploy показать ее как часть вашего вопроса? Кроме того, проверьте, работает ли изменение imagePullPolicy развертывания всегда? kubectl edit deployment test-flask-deploy и измените на imagePullPolicy: Always   -  person iamnat    schedule 07.10.2017
comment
Добавлено больше деталей, также попробую imagePullPolicy при следующем развертывании   -  person Xerphiel    schedule 07.10.2017


Ответы (1)


Сначала проверьте порт узла, назначенный вашей службе:

$ kubectl get svc test-flask-deploy
NAME                CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
test-flask-deploy   10.0.0.76    <nodes>       8080:30341/TCP   4m

Теперь у вас должна быть возможность получить к нему доступ на 192.168.xxxx:30341 или на другом вашем minikubeIP:nodeport.

person iamnat    schedule 07.10.2017
comment
Спасибо iamnat, приведенная выше команда дает следующее: ИМЯ КЛАСТЕР-IP ВНЕШНИЙ IP-ПОРТ (S) AG test-flask-deploy 10.0.0.5 ‹nodes› 8080: 32471 / TCP 1h Но когда я пытаюсь загрузка URL-адреса с добавленным портом. 192.168.99.100:8080 или: 32471, я получаю сообщение об ошибке в соединении. Я также могу получить доступ к панели управления на том же IP-адресе с портом 3000 - person Xerphiel; 07.10.2017
comment
Технически запуск minikube service test-flask-deploy должен открывать для вас браузер именно по этому URL-адресу. Что выводит minikube service test-flask-deploy --url? Кроме того, я помню проблему с невозможностью получить доступ к материалам на minikube через IE, можете ли вы попробовать другой браузер на всякий случай? - person iamnat; 07.10.2017
comment
Еще раз спасибо, эти 2 команды совпадают с вашим исходным комментарием, с тем же URL. Я думаю, что проблема может заключаться в том, что, возвращаясь к моему приложению фляги, по умолчанию он обслуживает конечную точку на 0.0.0.0 (слушайте все, хорошо), но обслуживает порт: 5000. Я ожидаю, что это может быть проблемой. Это нормально при запуске одного контейнера, поскольку я могу сопоставить порт хоста с контейнером 5000, но я не уверен, как согласовать порт, доступный для службы, с контейнером, обслуживающим фиксированный порт. За рамками исходного вопроса. Дайте мне знать, если у вас есть какие-либо мысли? Но вы ответили на мой первоначальный вопрос. - person Xerphiel; 07.10.2017
comment
Все заработало. Наконец, мне нужно было добавить --container-port-5000 в команду service expose, это сопоставило порт контейнера с портом сервера. Ваша помощь неоценима, спасибо! - person Xerphiel; 07.10.2017