服务通过群集IP工作,但不通过入口



我需要帮助弄清楚我的Ingress设置Minikube/Ingress nginx控制器哪里出了问题。Kuectl版本为1.19。Minikube版本为1.13.1

我有两个服务:一个是我在dotnetcore中创建的映像,另一个是从一个示例中提取的。这个例子没有给我任何问题:我可以通过http://myapp.com/web到达它。我构建的那个可以通过浏览器中的集群IP(端口80(直接访问,但不能使用http://myapp.com/datasvc从浏览器访问(404错误(。这是我的Ingress yaml:的一个片段

- host: myapp.com
http:
paths:
- path: /web2 #works
pathType: Prefix
backend:
service:
name: web2
port:
number: 8080
- path: /datasvc
pathType: Prefix
backend:
service:
name: datasvc
port:
number: 80

下面是我的后台:

Rules:
Host        Path  Backends
----        ----  --------
myapp.com
/web2       web2:8080     172.17.0.7:8080)
/datasvc   datasvc:80   172.17.0.8:80)

服务:

NAME                    TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
datasvc                 ClusterIP      10.100.7.119    <none>          80/TCP           11hde here
web2                    NodePort       10.98.6.48      <none>          8080:31122/TCP   12h

curl -H "HOST: myapp.com" localhost/web2 -v:的CURL输出

*   Trying 127.0.0.1:80...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /web2 HTTP/1.1
> Host: myapp.com    
> User-Agent: curl/7.67.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: nginx/1.19.1
< Date: Sun, 04 Oct 2020 16:16:55 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 61
< Connection: keep-alive
<
Hello, world!
Version: 1.0.0
Hostname: web2-7d85fb54bf-f26p2
* Connection #0 to host localhost left intact

curl -H "HOST: myapp.com" localhost/datasvc -v的CURL输出

*   Trying 127.0.0.1:80...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /datasvc HTTP/1.1
> Host: myapp.com
> User-Agent: curl/7.67.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
< Server: nginx/1.19.1
< Date: Sun, 04 Oct 2020 16:20:13 GMT
< Content-Length: 0
< Connection: keep-alive
<
* Connection #0 to host localhost left intact

我能看到的2之间的唯一区别是,示例(web2(服务使用type: NodePort,而我的服务使用默认服务(type: ClusterIP(。我试着在服务上做同样的事情,但没有什么不同。

我不知道还能从诊断上看什么,也不知道接下来该怎么办。我查看了许多Medium帖子,但没有发现任何描述我情况的内容。如果我应该提供更多信息,请告诉我。

Ingress支持NodePort服务类型或LoadBalancerClusterIP服务将仅在minikube虚拟机内部可用。

对于minikube,您应该使用NodePort服务类型配置。要在minikube上设置入口,您可以遵循官方文档。

要公开您的部署,您可以使用kubectl:

kubectl expose deployment <deployment_name> --type=NodePort --port=<port_number>

若要检查服务是否正常工作,您可以运行minikube service list和已公开的curlURL。

如果一切正常,您可以设置入口并将IP AddressHOST添加到/etc/hosts

最新更新