Миникуб, входящий не отвечает - PullRequest
1 голос
/ 21 марта 2020

Я не могу получить Minikube Nginx Ingress работает на моей локальной машине с использованием Minikube. Это просто время ожидания. Я следовал этому учебнику и этому также.

Версия 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 \ drivers \ etc \ hosts

172.17.186.182 hw1.com

миникуб IP

~\Desktop\kubernetes> minikube IP
172.17.186.182

1 Ответ

2 голосов
/ 21 марта 2020

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

Из вашей Windows CMD, которую вы выиграли невозможно получить 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 из CMD 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

Затем снова включить ваш Windows CMD:

curl <ip-from-eth0-above>:31181
...