我的测试 Web 应用程序出现错误,我在 Dockerfile 中使用 nginx - 进入 kubernetes minikube
My test web app is showing up error, I am using nginx in Dockerfile - ingress in kubernetes minikube
我正在尝试 kubernetes (minikube) 中的入口资源。我已经创建了 pod 和 NodePort 服务,当我 curl 192.168.99.100:30290
时它工作正常
然后我用 / 路径创建了入口,如果我添加 curl **-kL** 192.168.99.100
它仍然可以正常工作
但是当我在入口路径路径中添加 /anypath 时它 return 错误页面当我 curl **-kL** 192.168.99.100/anypath
kind: Pod
apiVersion: v1
metadata:
name: test-web
labels:
app: test-web
spec:
containers:
- name: test-web
image: aamirpinger/test-web
ports:
- containerPort: 80 # default nginx port
---
kind: Service
apiVersion: v1
metadata:
name: test-web-service
spec:
selector:
app: test-web
ports:
- port: 8080
targetPort: 80 # default nginx port
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: pwa-ingress
spec:
rules:
- http:
paths:
- path: /anypath
backend:
serviceName: test-web-service
servicePort: 8080
资源列表
kubectl get pod,svc,ingress
NAME READY STATUS RESTARTS AGE
pod/test-web 1/1 Running 0 7m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11m
service/test-web-service NodePort 10.98.17.107 <none> 8080:30290/TCP 7m
NAME HOSTS ADDRESS PORTS AGE
ingress.extensions/pwa-ingress * 10.0.2.15 80 7m
curl -kL 192.168.99.100/任意路径
收到以下结果
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.15.5</center>
</body>
</html>
预期结果
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
有谁知道我在上面遗漏了什么以使其正常工作?
您的网络应用程序是否处理此路径?从 nginx 方面来看,一切似乎都很好,它处理了请求。
您可以尝试 "nginx.ingress.kubernetes.io/rewrite-target: /" 注释,以便 nginx 将在请求中重写所需的目标。
如果您使用 nginx 手动启动 docker 容器,并将端口 80 暴露为某个本地端口,它是否可以导航到 /anypath ?您可以从您的 pod 访问 nginx 访问日志吗?
啊啊啊!!!终于得到了我的答案。 annotation: "nginx.ingress.kubernetes.io/rewrite-target: /" 我正在做注释但在开始时缺少 "nginx." 这只是错误的原因并且花了我一整天。这一行的目的实际上是从我们在 curl 之前编写的任何路由重定向到 root。因为 root 是我们通常拥有入口点的地方,即 index.html 在我的例子中。
我正在尝试 kubernetes (minikube) 中的入口资源。我已经创建了 pod 和 NodePort 服务,当我 curl 192.168.99.100:30290
然后我用 / 路径创建了入口,如果我添加 curl **-kL** 192.168.99.100
但是当我在入口路径路径中添加 /anypath 时它 return 错误页面当我 curl **-kL** 192.168.99.100/anypath
kind: Pod
apiVersion: v1
metadata:
name: test-web
labels:
app: test-web
spec:
containers:
- name: test-web
image: aamirpinger/test-web
ports:
- containerPort: 80 # default nginx port
---
kind: Service
apiVersion: v1
metadata:
name: test-web-service
spec:
selector:
app: test-web
ports:
- port: 8080
targetPort: 80 # default nginx port
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: pwa-ingress
spec:
rules:
- http:
paths:
- path: /anypath
backend:
serviceName: test-web-service
servicePort: 8080
资源列表
kubectl get pod,svc,ingress
NAME READY STATUS RESTARTS AGE
pod/test-web 1/1 Running 0 7m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11m
service/test-web-service NodePort 10.98.17.107 <none> 8080:30290/TCP 7m
NAME HOSTS ADDRESS PORTS AGE
ingress.extensions/pwa-ingress * 10.0.2.15 80 7m
curl -kL 192.168.99.100/任意路径
收到以下结果
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.15.5</center>
</body>
</html>
预期结果
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
有谁知道我在上面遗漏了什么以使其正常工作?
您的网络应用程序是否处理此路径?从 nginx 方面来看,一切似乎都很好,它处理了请求。 您可以尝试 "nginx.ingress.kubernetes.io/rewrite-target: /" 注释,以便 nginx 将在请求中重写所需的目标。
如果您使用 nginx 手动启动 docker 容器,并将端口 80 暴露为某个本地端口,它是否可以导航到 /anypath ?您可以从您的 pod 访问 nginx 访问日志吗?
啊啊啊!!!终于得到了我的答案。 annotation: "nginx.ingress.kubernetes.io/rewrite-target: /" 我正在做注释但在开始时缺少 "nginx." 这只是错误的原因并且花了我一整天。这一行的目的实际上是从我们在 curl 之前编写的任何路由重定向到 root。因为 root 是我们通常拥有入口点的地方,即 index.html 在我的例子中。