我需要帮助弄清楚我的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
服务类型或LoadBalancer
。ClusterIP
服务将仅在minikube虚拟机内部可用。
对于minikube,您应该使用NodePort服务类型配置。要在minikube上设置入口,您可以遵循官方文档。
要公开您的部署,您可以使用kubectl:
kubectl expose deployment <deployment_name> --type=NodePort --port=<port_number>
若要检查服务是否正常工作,您可以运行minikube service list
和已公开的curlURL。
如果一切正常,您可以设置入口并将IP Address
和HOST
添加到/etc/hosts
。