Переадресация портов не работает в MiniKube в Windows 10 - PullRequest
0 голосов
/ 21 июня 2019

Я настраиваю kubernetes на своем ноутбуке (ОС Windows 10) для работы с контейнерами и их оркестровкой. Я создал виртуальную машину Minikube, используя приведенную ниже команду, и она прошла успешно.

minikube start --vm-driver hyperv --hyperv-virtual-switch "Primary Virtual Switch"

Я могу запустить Kubernetes и также могу запустить панель мониторинга Minikube

Я запустил кластер Kubernetes и развернул приложение nginx в кластере. Ниже приведены команды.

kubectl run hello-nginx --image=nginx --port=8020
kubectl expose deployment hello-nginx --type=NodePort --port=8020 --target-port=8020

Я могу просматривать POD и службы с помощью приведенных ниже команд.

kubectl get pods
kubectl get services

до сих пор прекрасно работает . Я могу просматривать информацию о развертывании, PODs и Service на панели мониторинга Minikube.

Когда я запускаю приведенную ниже команду для запуска приложения в браузере, браузер выдает сообщение «Ресурс не найден», но я могу просмотреть информацию о POD и сервисе на панели мониторинга MiniKube.

minikube service hello-nginx

URL: http://192.168.43.20:32087/

получение исключения в браузере

This website could not be found.
Error Code: INET_E_RESOURCE_NOT_FOUND

Ниже приведен файл развертывания YAML,

{
  "kind": "Deployment",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "hello-nginx",
    "namespace": "default",
    "selfLink": "/apis/extensions/v1beta1/namespaces/default/deployments/hello-nginx",
    "uid": "5629038e-93e5-11e9-ad2e-00155d162e0e",
    "resourceVersion": "49313",
    "generation": 1,
    "creationTimestamp": "2019-06-21T05:28:01Z",
    "labels": {
      "run": "hello-nginx"
    },
    "annotations": {
      "deployment.kubernetes.io/revision": "1"
    }
  },
  "spec": {
    "replicas": 1,
    "selector": {
      "matchLabels": {
        "run": "hello-nginx"
      }
    },
    "template": {
      "metadata": {
        "creationTimestamp": null,
        "labels": {
          "run": "hello-nginx"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "hello-nginx",
            "image": "nginx",
            "ports": [
              {
                "containerPort": 8020,
                "protocol": "TCP"
              }
            ],
            "resources": {},
            "terminationMessagePath": "/dev/termination-log",
            "terminationMessagePolicy": "File",
            "imagePullPolicy": "Always"
          }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "securityContext": {},
        "schedulerName": "default-scheduler"
      }
    },
    "strategy": {
      "type": "RollingUpdate",
      "rollingUpdate": {
        "maxUnavailable": 1,
        "maxSurge": 1
      }
    },
    "revisionHistoryLimit": 2147483647,
    "progressDeadlineSeconds": 2147483647
  },
  "status": {
    "observedGeneration": 1,
    "replicas": 1,
    "updatedReplicas": 1,
    "readyReplicas": 1,
    "availableReplicas": 1,
    "conditions": [
      {
        "type": "Available",
        "status": "True",
        "lastUpdateTime": "2019-06-21T05:28:01Z",
        "lastTransitionTime": "2019-06-21T05:28:01Z",
        "reason": "MinimumReplicasAvailable",
        "message": "Deployment has minimum availability."
      }
    ]
  }
}

Ниже приведена информация о файле YAML для набора реплик,

{
  "kind": "ReplicaSet",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "hello-nginx-76696c698f",
    "namespace": "default",
    "selfLink": "/apis/extensions/v1beta1/namespaces/default/replicasets/hello-nginx-76696c698f",
    "uid": "562be1e8-93e5-11e9-ad2e-00155d162e0e",
    "resourceVersion": "49310",
    "generation": 3,
    "creationTimestamp": "2019-06-21T05:28:01Z",
    "labels": {
      "pod-template-hash": "76696c698f",
      "run": "hello-nginx"
    },
    "annotations": {
      "deployment.kubernetes.io/desired-replicas": "1",
      "deployment.kubernetes.io/max-replicas": "2",
      "deployment.kubernetes.io/revision": "1"
    },
    "ownerReferences": [
      {
        "apiVersion": "apps/v1",
        "kind": "Deployment",
        "name": "hello-nginx",
        "uid": "5629038e-93e5-11e9-ad2e-00155d162e0e",
        "controller": true,
        "blockOwnerDeletion": true
      }
    ]
  },
  "spec": {
    "replicas": 1,
    "selector": {
      "matchLabels": {
        "pod-template-hash": "76696c698f",
        "run": "hello-nginx"
      }
    },
    "template": {
      "metadata": {
        "creationTimestamp": null,
        "labels": {
          "pod-template-hash": "76696c698f",
          "run": "hello-nginx"
        }
      },
      "spec": {
        "containers": [
          {
            "name": "hello-nginx",
            "image": "nginx",
            "ports": [
              {
                "containerPort": 8020,
                "protocol": "TCP"
              }
            ],
            "resources": {},
            "terminationMessagePath": "/dev/termination-log",
            "terminationMessagePolicy": "File",
            "imagePullPolicy": "Always"
          }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "securityContext": {},
        "schedulerName": "default-scheduler"
      }
    }
  },
  "status": {
    "replicas": 1,
    "fullyLabeledReplicas": 1,
    "readyReplicas": 1,
    "availableReplicas": 1,
    "observedGeneration": 3
  }
}

Сейчас я пытаюсь использовать опцию переадресации портов для направления запроса на POD, но он не работает.

kubectl port-forward deployment/hello-nginx 8020:8020

При попытке получить доступ к URL-адресу появляется следующее исключение: http://127.0.0.1:8020"

Handling connection for 8020
E0622 01:07:06.306320   18888 portforward.go:331] an error occurred forwarding 8020 -> 8020: error forwarding port 8020 to pod c54d6faaa545992dce02f58490a26154134843eb7426a51e78df2cda172b514c, uid : exit status 1: 2019/06/21 08:01:18 socat[4535] E connect(5, AF=2 127.0.0.1:8020, 16): Connection refused

Я прочитал много статей на эту тему, но не смог найти причину этой проблемы. Я что-то упустил здесь?

Спасибо за вашу помощь в Advance.

1 Ответ

1 голос
/ 24 июня 2019

Ваша проблема на самом деле не связана с Minikube или переадресацией портов. Вы выставляете порт 8020, однако приложение hello-nginx использует 80. Поэтому вы должны использовать 80 везде вместо 8020. Например:

kubectl run hello-nginx --image=nginx --port=80

Сказать, что использование Minikube - не лучший вариант для Windows. Гораздо лучше использовать Docker Desktop , тогда все, что вы запускаете в Kubernetes, доступно на вашем localhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...