入口总是 returns 404
Ingress always returns 404
我在没有负载均衡器的裸机配置中使用 K8s 1.21.0。
我已经使用 helm 在 NodePort 配置中安装了 nginx 入口:
helm install ********** nginx-stable/nginx-ingress --set "controller.service.type=NodePort" --namespace=nginx-ingress
编辑:我也试过这个作为 LoadBalancer,但结果是一样的。
我已经使用以下 yaml 部署了一个简单的 nginx 网络服务器:
apiVersion: apps/v1
kind: Deployment
metadata:
name: www-deployment
spec:
selector:
matchLabels:
app: www
replicas: 1
template:
metadata:
labels:
app: www
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
和一项服务:
apiVersion: v1
kind: Service
metadata:
name: webserver-service
spec:
selector:
app: www
ports:
- protocol: TCP
port: 80
targetPort: 80
具有以下入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: k8stest.************.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webserver-service
port:
number: 80
从我的控制平面,我可以很好地为服务卷曲集群 IP。我得到了我所期望的:
curl 10.103.183.94
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>....
但是,如果我通过它的服务 curl 我的入口控制器,我总是得到 404。
curl -H "Host: k8stest.**********.com" http://10.106.95.61
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.19.9</center>
</body>
</html>
我试过删除重写目标注释,但这导致了相同的结果。 404.
入口控制器似乎没有与我的服务通信。
在入口控制器日志中,我刚刚看到:
[06/May/2021:08:31:53 +0000] "GET / HTTP/1.1" 404 153 "-" "curl/7.68.0" "-"
我也尝试过在入口配置中使用和不使用主机值,还尝试在入口路径中使用 /test 而不是 / 。没有任何东西被发送到后端 nginx 服务。
好的,我放弃了 helm 安装的 nginx 入口控制器,并按照此处记录的方式进行裸机安装:
https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
一上来运行,一切如期而至。
我在没有负载均衡器的裸机配置中使用 K8s 1.21.0。 我已经使用 helm 在 NodePort 配置中安装了 nginx 入口:
helm install ********** nginx-stable/nginx-ingress --set "controller.service.type=NodePort" --namespace=nginx-ingress
编辑:我也试过这个作为 LoadBalancer,但结果是一样的。
我已经使用以下 yaml 部署了一个简单的 nginx 网络服务器:
apiVersion: apps/v1
kind: Deployment
metadata:
name: www-deployment
spec:
selector:
matchLabels:
app: www
replicas: 1
template:
metadata:
labels:
app: www
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
和一项服务:
apiVersion: v1
kind: Service
metadata:
name: webserver-service
spec:
selector:
app: www
ports:
- protocol: TCP
port: 80
targetPort: 80
具有以下入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: k8stest.************.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webserver-service
port:
number: 80
从我的控制平面,我可以很好地为服务卷曲集群 IP。我得到了我所期望的:
curl 10.103.183.94
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>....
但是,如果我通过它的服务 curl 我的入口控制器,我总是得到 404。
curl -H "Host: k8stest.**********.com" http://10.106.95.61
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.19.9</center>
</body>
</html>
我试过删除重写目标注释,但这导致了相同的结果。 404.
入口控制器似乎没有与我的服务通信。
在入口控制器日志中,我刚刚看到:
[06/May/2021:08:31:53 +0000] "GET / HTTP/1.1" 404 153 "-" "curl/7.68.0" "-"
我也尝试过在入口配置中使用和不使用主机值,还尝试在入口路径中使用 /test 而不是 / 。没有任何东西被发送到后端 nginx 服务。
好的,我放弃了 helm 安装的 nginx 入口控制器,并按照此处记录的方式进行裸机安装:
https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
一上来运行,一切如期而至。