我在VMWare工作站15上配置了一个私有的2节点Kubernetes集群,我使用的是MetalLB和Calico。入口服务和入口看起来像:
xxx@c1-cp1:~/Desktop$ kubectl get svc -n ingress-controller-2
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wsnginx-ingress-nginx-controller LoadBalancer 10.109.117.222 192.168.44.136 80:30167/TCP,443:30680/TCP 24h
wsnginx-ingress-nginx-controller-admission ClusterIP 10.105.103.165 443/TCP 24h
xxx@c1-cp1:~/Desktop$ kubectl get ing apollo-ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
apollo-ingress wsnginx test.xxx.com 192.168.44.136 80 3h17m我正在使用Nat网络适配器和静态IPS。我的端口转发配置如下

VM中的curl -D- http://192.168.44.136 -H 'Host: test.xxx.com'返回200状态,但当我得到一个404 NGINX NotFound时,无法从127.0.0.1:8080上的主机Win10访问它。
你能帮帮我吗?我做错什么了?不然我怎么能把它暴露在我的私人网络里呢?谢谢!
UPDATE我不确定这是否是正确的方法,但我设法从主机连接,通过稍微改变了Ingress资源。我输入了主机参数注释,如
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: apollo-ingress
spec:
ingressClassName: wsnginx
rules:
#- host: test.xxx.com
- http:
paths:
- backend:
service:
name: apollo-service
port:
number: 80
path: /
pathType: Prefix现在我的入口看起来像这样
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
default ingress.networking.k8s.io/apollo-ingress wsnginx * 192.168.44.136 80 3h31m看来我现在也可以从我的主机上访问它了。我有一个Rest,所以我刚刚从浏览器http://127.0.0.1:8080打开它
发布于 2021-12-08 12:11:55
这似乎是缺少HTTP头的一个简单问题。
首先,简短的解释:每当在Intru清单中指定Host字段时,只有来自该主机的连接才会被接受。此信息是从Host HTTP报头中提取的。如果您不指定Host字段,则将接受来自所有源的请求。
你第一次发送的请求是正确的
curl -D- http://192.168.44.136 -H 'Host: test.xxx.com'但第二次忘了这么做。与上述等效的Powershell是
Invoke-WebRequest -Uri http://127.0.0.1 -Headers @{"Host"="test.xxx.com"}从命令行完成这一切都很简单,但是从web浏览器发送请求要困难一些。默认情况下,Web不允许您修改请求,以包含适当的Host头。然而,这种功能可以通过扩展来实现:
https://serverfault.com/questions/1085627
复制相似问题