Вход в Minikube не отвечает

Я не могу запустить Minikube Nginx Ingress на моем локальном компьютере с помощью minikube. Просто время истекло. Я выполнил этот учебник и это также.

Версия миникуба:

v1.8.1 (commit cbda04cf6bbe65e987ae52bb393c10099ab62014)

Информация о кластере:

// Client Version: 
{
    Major: "1",
    Minor: "17",
    GitVersion: "v1.17.1",
    GitCommit: "d224476cd0730baca2b6e357d144171ed74192d6",
    GitTreeState: "clean",
    BuildDate: "2020-01-14T21:04:32Z",
    GoVersion: "go1.13.5",
    Compiler: "gc",
    Platform: "windows/amd64"
}
// Server Version: version.Info
{
    Major: "1",
    Minor: "17",
    GitVersion: "v1.17.3",
    GitCommit: "06ad960bfd03b39c8310aaf92d1e7c12ce618213",
    GitTreeState: "clean",
    BuildDate: "2020-02-11T18:07:13Z",
    GoVersion: "go1.13.6",
    Compiler: "gc",
    Platform: "linux/amd64"
}

Должно быть что-то не так с моей локальной средой, но я не знаю, как ее отлаживать. Вот как выглядит моя текущая среда:

apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes-first
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 8080
    name: http
  selector:
    app: hello-kubernetes-first
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes-first
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-kubernetes-first
  template:
    metadata:
      labels:
        app: hello-kubernetes-first
    spec:
      containers:
      - name: hello-kubernetes
        image: paulbouwer/hello-kubernetes:1.5
        ports:
        - containerPort: 8080
        env:
        - name: MESSAGE
          value: Hello from the first deployment!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-kubernetes-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: hw1.com
    http:
      paths:
      - backend:
          serviceName: hello-kubernetes-first
          servicePort: 80

Системные модули

~\Desktop\kubernetes> kubectl get pods -n kube-system                                                                                                                                                              NAME                                        READY   STATUS    RESTARTS   AGE
coredns-6955765f44-8zxgw                    1/1     Running   6          12d
coredns-6955765f44-jr9xq                    1/1     Running   7          12d
etcd-m01                                    1/1     Running   1          3h48m
kube-apiserver-m01                          1/1     Running   1          3h48m
kube-controller-manager-m01                 1/1     Running   597        12d
kube-proxy-mnhcl                            1/1     Running   7          12d
kube-scheduler-m01                          1/1     Running   596        12d
nginx-ingress-controller-6fc5bcc8c9-z7m2b   1/1     Running   6          27h
storage-provisioner                         1/1     Running   11         12d

C:\Windows\System32\драйверы\etc\hosts

172.17.186.182 hw1.com

миникуб IP

~\Desktop\kubernetes> minikube IP
172.17.186.182

person Facundo La Rocca    schedule 20.03.2020    source источник


Ответы (2)


Вы используете ClusterIP в своем определении Service и, судя по внешнему виду вашего вывода , вы используете minikube в Windows.

Из командной строки Windows вы не сможете получить доступ к ClusterIP, так как он работает на виртуальной машине. Вы можете подтвердить это, запустив:

minikube ssh

Затем в ВМ:

curl 172.17.186.182

Вы можете попробовать предоставить свою службу, используя NodePort на виртуальной машине. Это будет порт, доступный извне с вашей виртуальной машины, но он не будет 80, поскольку Kubernetes выделяет настраиваемый диапазон 30000-32767. Вы можете вручную изменить это в kube-apiserver используя опцию --service-node-port-range portRange, если хотите.

apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes-first
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    name: http
  selector:
    app: hello-kubernetes-first

Получите NodePort из командной строки Windows (пример):

kubectl get svc
NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
hello-kubernetes-first   NodePort    10.102.234.222   <none>        80:31181/TCP   3m51s
kubernetes               ClusterIP   10.96.0.1        <none>        443/TCP        138d

NodePort выше: 31181

Затем вы должны использовать IP-адрес для eth0 на вашей виртуальной машине:

minikube ssh
$ ifconfig eth0

Затем вернитесь к CMD Windows:

curl <ip-from-eth0-above>:31181
person Rico    schedule 21.03.2020
comment
Эй, спасибо за ваш ответ. Я думал, что с помощью входного контроллера мне не нужно выставлять модуль извне. Я пытался использовать входной контроллер как своего рода API-шлюз. - person Facundo La Rocca; 21.03.2020
comment
Ресурс Ingress сам по себе не является входным контроллером. Это просто Ingress ресурс. Фактическим входным контроллером может быть что-то вроде github.com/kubernetes/ingress-nginx. Это дает вам больше гибкости, но тогда вы вернетесь к той же проблеме доступа к нему с хоста на виртуальную машину, вы не можете использовать ClusterIP - person Rico; 21.03.2020

проверьте, включен ли входной аддон:

minikube addons list

если нет, включите его:

minikube addons enable ingress
person Sebastian Sejzer    schedule 09.05.2021