kubernetes - Minikube NGINX Ingress 返回 404 Not Found
问题描述
我创建了一个部署、一个服务和一个入口,以便能够从我的主机访问 NGINX 网络服务器,但我不断收到 404 Not Found。经过很多小时的故障排除后,我已经到了非常欢迎一些帮助的地步。
步骤和相关的yaml文件如下。
启用 Minikube NGINX 入口控制器
minikube 插件启用入口
创建 NGINX Web 服务器部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: webserver-white
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx-webserver-white
template:
metadata:
labels:
app: nginx-webserver-white
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
创建 ClusterIP 服务来管理对 pod 的访问
apiVersion: v1
kind: Service
metadata:
name: webserver-white-svc
labels:
run: webserver-white-svc
spec:
type: ClusterIP
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx-webserver-white
创建 Ingress 以从集群外部访问服务
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: webserver-white-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
defaultBackend:
service:
name: webserver-white-svc
port:
number: 80
rules:
- host: white.example.com # This is pointing to the control plane IP
http:
paths:
- backend:
service:
name: webserver-white-svc
port:
number: 80
path: /
pathType: ImplementationSpecific
测试
当连接到一个 pod 并执行时curl http://localhost
,它会返回 NGINX 主页 html,因此该 pod 看起来不错。
创建测试 pod 并执行时curl http://<service-cluster-ip>
,它返回 NGINX 主页 html,因此服务看起来不错。
在连接到 ingress nginx 控制器 pod 并执行时curl http://<service-cluster-ip>
,它也返回了 NGINX 主页 html,因此入口控制器和服务之间的连接看起来不错。
当连接到控制平面minikube ssh
并执行时,ping <nginx-controller-ip>
我看到它到达了 nginx 控制器。
我进行了相同的测试,但使用 NodePort 服务而不是 ClusterIP 并注意到我可以使用节点端口访问 NGINX 主页,但不能使用 Ingress 端口。
知道我可能做错了什么和/或我还能做些什么来更好地解决这个问题吗?
其他注意事项
- minikube 版本:v1.23.0
- 客户端和服务器上的 kubectl 版本:v1.22.1
- 操作系统:Ubuntu 18.04.5 LTS(仿生海狸)
更新/解决方案:
kubernetes.io/ingress.class: "nginx"
解决方案是在 Ingress 上添加缺少的注释。
解决方案
解决方案是在 Ingress 上添加缺少的注释 kubernetes.io/ingress.class: "nginx"。
推荐阅读
- firebase - 在本机反应中识别firebase身份验证和数据库查询超时
- ios - 无法运行我从 GitHub 获得的 swift 应用程序?
- java - 设置自定义样式时缺少菜单按钮
- google-sheets - 将 IMPORTXML 函数输出格式化为时间“h:mm”
- raspberry-pi - yocto raspberrypi 显示默认启动画面而不是 raspberrypi 启动画面
- r - 如何在因子加载大于0.5的条件下向水平条添加三种颜色
- javascript - 允许在引导标签输入中自由输入(对象作为标签)
- ruby-on-rails - 验证时表单内的简单表单错误通知
- ruby-on-rails - 种子错误 ActiveModel::UnknownAttributeError: 列表的未知属性“摘录”
- python - 在 Nanobox 中,pip install 遇到了 NewConnectionError。无法使用 pip 安装软件包。