如何解决在Docker Windows上运行kubernetes ingress-nginx时找不到404页面
我在Windows计算机上运行docker并尝试访问http://posts.com/posts,因为我收到HTTP错误404.0-未找到。
Windows主机配置文件已正确配置
127.0.0.1 posts.com
因为我可以浏览到http://posts.com
我还可以使用端口号http://posts.com:31783/posts进行访问。
我不确定为什么无法通过端口80访问。
以下是来自kubernetes的日志
和入口配置
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: posts.com
http:
paths:
- path: /posts
backend:
serviceName: posts-clusterip-srv
servicePort: 4000
部署和服务文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts-depl
spec:
replicas: 1
selector:
matchLabels:
app: posts
template:
metadata:
labels:
app: posts
spec:
containers:
- name: posts
image: nishank/posts:latest
---
apiVersion: v1
kind: Service
metadata:
name: posts-clusterip-srv
spec:
type: ClusterIP
selector:
app: posts
ports:
- name: posts
protocol: TCP
port: 4000
targetPort: 4000
解决方法
好的,我终于可以解决这个问题了。
首先,这个问题是参考Stephen Grider的带有Node JS和React的微服务课程。我知道这是因为尝试的服务/配置直接来自课程内容。
Windows PC上正在运行某些已使用端口80的东西,这就是为什么收到404的原因。要了解执行此操作的过程,请首先在powershell / windows终端实例中运行以下命令:>
netstat -ano | findstr ":80" | findstr "LISTENING"
您将看到类似以下的内容:
❯ netstat -ano | findstr ":80" | findstr "LISTENING"
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 13056
TCP [::]:80 [::]:0 LISTENING 13056
TCP [::1]:80 [::]:0 LISTENING 16852
一旦注意到PID在端口0.0.0.0上侦听,请使用“ Ctrl + Alt + Delete”打开“任务管理器”,然后转到“详细信息”选项卡。按PID排序,找到在侦听端口80时发现的进程。遇到问题时,PID为4。
有时进程名称是不同的,有时它仅被称为“系统”。因此,无论名称如何,都右键单击该名称,然后单击“打开文件位置”。
如果将您带到“ ntoskrnl.exe”,那么罪魁祸首很可能是“万维网发布服务”。您可以通过在Windows搜索栏中键入“服务”,打开“服务”并在列表中找到它来进行检查。如果它正在运行,请继续并停止它。
如果不是这种情况,那么其他服务/进程也可能会受到影响。 Stackoverflow here在端口80上收到了来自其他人的大量响应以及其他进程。
解决该问题后,请使用以下方法再次应用服务:
kubectl apply -f ingress-srv.yaml
你应该很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。