带有入口示例的Minikube不起作用

问题描述 投票:0回答:1

我正在尝试让Minikube中的入口控制器工作,并遵循K8s文档here中的步骤,但是看到的结果不同,入口控制器的IP地址与Minikube的IP地址不同(示例似乎表明它们应该相同):

$ kubectl get ingress
NAME              HOSTS              ADDRESS     PORTS   AGE
example-ingress   hello-world.info   10.0.2.15   80      12m

$ minikube ip
192.168.99.101

[当我尝试连接到Minikube IP地址(直接使用该地址或将其添加到我的本地主机文件中时,我收到NGINX的“未找到”响应:

$ curl http://`minikube ip`/
<html>
    <head><title>404 Not Found</title></head>
    <body>
        <center><h1>404 Not Found</h1></center>
        <hr><center>openresty/1.15.8.1</center>
    </body>
</html>

[当我尝试连接到与入口控制器关联的IP地址时,它只是挂起。

我希望地址与K8s文档所指示的地址相同吗?

一些其他信息:

$ kubectl get nodes -o wide
NAME       STATUS   ROLES    AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE              KERNEL-VERSION   CONTAINER-RUNTIME
minikube   Ready    master   2d23h   v1.16.0   10.0.2.15     <none>        Buildroot 2018.05.3   4.15.0           docker://18.9.9

$ kubectl get ingresses example-ingress -o yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{"nginx.ingress.kubernetes.io/rewrite-target":"/$1"},"name":"example-ingress","namespace":"default"},"spec":{"rules":[{"host":"hello-world.info","http":{"paths":[{"backend":{"serviceName":"web","servicePort":8080},"path":"/"}]}}]}}
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  creationTimestamp: "2019-10-28T15:36:57Z"
  generation: 1
  name: example-ingress
  namespace: default
  resourceVersion: "25609"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/example-ingress
  uid: 5e96c378-fbb1-4e8f-9738-3693cbce7d9b
spec:
  rules:
  - host: hello-world.info
    http:
      paths:
      - backend:
          serviceName: web
          servicePort: 8080
        path: /
status:
  loadBalancer:
    ingress:
    - ip: 10.0.2.15
kubernetes minikube kubernetes-ingress
1个回答
0
投票
我已经在Linux环境(在GCP上)上复制了您的方案,并且我也有不同的IP:

user@bf:~$ minikube ip 192.168.39.144 user@bf:~$ kubectl get ingresses NAME HOSTS ADDRESS PORTS AGE example-ingress * 192.168.122.173 80 30m

您的问题与您拥有不同的IP无关。该指南指示我们使用以下规则创建入口:

spec: rules: - host: hello-world.info

此规则告诉入口服务,期望具有hello-world.info名称的DNS记录。如果您按照指南中的内容进行操作,它会指示您在主机文件上创建一个指向入口IP或Minicube IP的条目。

注意:如果您在本地运行Minikube,请使用minikube ip获取外部IP。入口列表中显示的IP地址将是内部IP。来源:Set up Ingress on Minikube with the NGINX Ingress Controlle

如果要卷曲IP而不是DNS名称,则需要从入口中删除主机规则。它看起来应该像这样:

apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - http: paths: - path: / backend: serviceName: web servicePort: 8080

应用您的更改:

user@bf:~$ kubectl apply -f example-ingress.yaml

并使用-Lk选项卷曲IP,以解决与安全连接有关的问题。 

user@bf:~$ curl -Lk 192.168.39.144 Hello, world! Version: 1.0.0 Hostname: web-9bbd7b488-l5gc9

© www.soinside.com 2019 - 2024. All rights reserved.