我需要帮助来弄清楚我的Ingress设置Minikube / ingress-nginx-controller在做什么。 Kubectl版本是1.19。 Minikube版本是1.13.1
我有2个服务: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
我看到的两个唯一区别是示例(web2)服务使用type: NodePort
,而我的服务使用默认值(type: ClusterIP
)。我尝试对服务进行相同的操作,但这没什么区别。
我不知道还要从诊断角度看什么,或者从这里去哪里。我检查了许多中型帖子,但没有发现任何描述我的情况的信息。请让我知道是否需要提供更多信息。
答案 0 :(得分:0)
入口supports either NodePort
服务类型或LoadBalancer
。 ClusterIP
服务仅在minikube VM内部可用。
对于minikube,您应该使用NodePort service type configuration。要在minikube上设置入口,您可以遵循official documentation。
要公开您的部署,可以使用kubectl:
kubectl expose deployment <deployment_name> --type=NodePort --port=<port_number>
要检查服务是否正常运行,您可以运行minikube service list
并卷曲您公开的URL。
如果一切正常,则可以设置入口并将IP Address
和HOST
添加到/etc/hosts
。