Нет доступа к модулю Kubernetes

Я использую Docker и Minikube в Windows для изучения k8s, но мне не удалось развернуть свое первое приложение.

Я выполнил следующие команды:

  1. kubectl run testapp --image=saphyra/testapp:latest --port=8080
  2. kubectl expose deployment testapp --type=NodePort
  3. minikube service testapp

Используя команду minikube dashboard, я вижу, что модуль создан и запущен, я вижу журналы, и в нем говорится, что Tomcat запущен на порту 8080, как и ожидалось.

Так вроде все ок.

Но как я могу вызвать конечную точку (из браузера) запущенной мной службы? В руководстве, за которым я следил (и во многих других руководствах YouTube), говорится, что теперь я должен уметь для вызова конечных точек приложения.

Что я скучаю? Как я могу получить доступ к своему приложению?

Изменить:

Опишите результат

kubectl describe svc testapp >
Name:                     testapp
Namespace:                default
Labels:                   run=testapp
Annotations:              <none>
Selector:                 run=testapp
Type:                     NodePort
IP:                       10.110.10.61
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  31612/TCP
Endpoints:                172.18.0.4:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

логи прокси kube:

server_others.go:323] Unknown proxy mode "", assuming iptables proxy
node.go:135] Successfully retrieved node IP: 172.17.0.2
server_others.go:145] Using iptables Proxier.
server.go:571] Version: v1.17.3
conntrack.go:100] Set sysctl 'net/netfilter/nf_conntrack_max' to 524288
conntrack.go:52] Setting nf_conntrack_max to 524288
conntrack.go:127] sysfs is not writable: {Device:sysfs Path:/sys Type:sysfs Opts:[ro nosuid nodev noexec relatime] Freq:0 Pass:0} (mount options are [ro nosuid nodev noexec relatime])
conntrack.go:100] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_established' to 86400
conntrack.go:100] Set sysctl 'net/netfilter/nf_conntrack_tcp_timeout_close_wait' to 3600
config.go:313] Starting service config controller
shared_informer.go:197] Waiting for caches to sync for service config
config.go:131] Starting endpoints config controller
shared_informer.go:197] Waiting for caches to sync for endpoints config
shared_informer.go:204] Caches are synced for service config 
shared_informer.go:204] Caches are synced for endpoints config 

ИЗМЕНИТЬ 2

kubectl get svc testapp -o yaml >

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2020-03-25T17:03:57Z"
  labels:
    run: testapp
  name: testapp
  namespace: default
  resourceVersion: "3454"
  selfLink: /api/v1/namespaces/default/services/testapp
  uid: 048d05df-eaad-4d4b-845f-d98b222fe101
spec:
  clusterIP: 10.110.10.61
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31612
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    run: testapp
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

kubectl get pod testapp-c565bfccc-xht6j -o yaml >

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2020-03-25T17:03:52Z"
  generateName: testapp-c565bfccc-
  labels:
    pod-template-hash: c565bfccc
    run: testapp
  name: testapp-c565bfccc-xht6j
  namespace: default
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: testapp-c565bfccc
    uid: 21e2c9ab-3771-482f-8849-71754aaf5ff6
  resourceVersion: "3491"
  selfLink: /api/v1/namespaces/default/pods/testapp-c565bfccc-xht6j
  uid: c4dfdcb6-d050-4c44-99d1-6881bc39f805
spec:
  containers:
  - image: saphyra/testapp:latest
    imagePullPolicy: Always
    name: testapp
    ports:
    - containerPort: 8080
      protocol: TCP
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: default-token-689j9
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: m01
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: default
  serviceAccountName: default
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - name: default-token-689j9
    secret:
      defaultMode: 420
      secretName: default-token-689j9
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2020-03-25T17:03:52Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2020-03-25T17:04:12Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2020-03-25T17:04:12Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2020-03-25T17:03:52Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: docker://9a3ddc83df779bb4dc4b88718d82f7065d2dc647360fa200b4815ecc260a7ed4
    image: saphyra/testapp:latest
    imageID: docker-pullable://saphyra/testapp@sha256:b328a874297521f35c84a37cde160e23a39d6a12c7184dbe3c88ff0250b05df6
    lastState: {}
    name: testapp
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2020-03-25T17:04:11Z"
  hostIP: 172.17.0.2
  phase: Running
  podIP: 172.18.0.4
  podIPs:
  - ip: 172.18.0.4
  qosClass: BestEffort
  startTime: "2020-03-25T17:03:52Z"

person Saphyra    schedule 25.03.2020    source источник
comment
minikube service testapp не запустил браузер?   -  person Arghya Sadhu    schedule 25.03.2020
comment
Он запустил вкладку в браузере, но ERR_CONNECTION_REFUSED   -  person Saphyra    schedule 25.03.2020
comment
добавить вывод kubectl, описать svc testapp и журналы прокси-модулей kube в пространство имен kube-system   -  person Arghya Sadhu    schedule 25.03.2020
comment
Запрошенные данные добавлены @ArghyaSadhu   -  person Saphyra    schedule 25.03.2020


Ответы (2)


Виртуальная машина Minikube доступна для хост-системы через IP-адрес только для хоста, который можно получить с помощью команды $ minikube ip. Любые службы типа NodePort можно получить через этот IP-адрес на NodePort.

Судя по предоставленной вами информации, ваша служба прослушивает NodePort:31612. Итак, вы можете получить доступ к своему приложению из браузера по следующему URL-адресу: minikube-ip:NodePort.

Допустим, ваш IP-адрес minikube - 192.168.99.100, а NodePort - 31612, тогда URL будет 192.168.99.100:31612.

person Kamol Hasan    schedule 25.03.2020
comment
minikube ip вернул 172.17.0.2. По-прежнему нет связи с 172.17.0.2:31612 - person Saphyra; 25.03.2020
comment
убедитесь, что ваша служба и приложение работают, проверьте, testapp.default.svc:8080 доступны ли они внутри кластера. Для этого используйте $ minikube ssh и curl. - person Kamol Hasan; 25.03.2020
comment
curl 172.18.0.4:8080 вернул ожидаемый ответ - person Saphyra; 25.03.2020
comment
добавьте к вопросу yamls kubectl get pod <pod-name> -o yaml и kubectl get svc <service-name> -o yaml - person Kamol Hasan; 25.03.2020
comment
Добавлено в вопрос - person Saphyra; 25.03.2020

Хорошо, наконец-то я обнаружил: minikube start выбрал «докер» в качестве драйвера, поэтому все кубернеты были запущены в контейнере докера, и я думаю, контейнер докера не был открыт для хоста.

Когда я установил драйвер hyperv явным образом, и minikube запустил свою собственную виртуальную машину, все работало нормально.

Однако это все еще вопрос, как я могу открыть minikube, работающий в контейнере докеров.

person Saphyra    schedule 26.03.2020