首页 > 解决方案 > Minikube 入口没有响应

问题描述

我无法使用 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\drivers\etc\hosts

172.17.186.182 hw1.com

minikube IP

~\Desktop\kubernetes> minikube IP
172.17.186.182

标签: kubernetesminikubenginx-ingress

解决方案


ClusterIP服务定义中使用,从输出的外观来看,您正在 Windows 上运行 minikube。

从您的 Windows CMD 您将无法访问,ClusterIP因为它在 VM(虚拟机)中运行。您可以通过运行来确认这一点:

minikube ssh

然后在虚拟机中:

curl 172.17.186.182

您可以尝试NodePort在 VM 上使用 a 公开您的服务。这将是您的 VM 外部可用的端口,但它不会是 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 CMD获取(示例):

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

接下来,您必须在 VM 中使用 eth0 的 IP:

minikube ssh
$ ifconfig eth0

然后回到你的 Windows CMD:

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

推荐阅读