如何解决default-http-backend 阻止我点击创建的入口规则
我正在安装 nginx-controller 以公开服务,在安装入口资源后无法访问所需的端口。我没能说出下面的话,
[root@k8-m smartrem]# kubectl describe ingress ingress-svc
Name: ingress-svc
Namespace: default
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
auditmee.com
/swagger-ui.html springboot-service:8080 (192.168.157.76:8080,192.168.157.77:8080,192.168.250.8:8080)
Annotations: <none>
Events: <none>
我看到错误与 default-http-backend、如何创建 default-http-backend 服务有关。
任何帮助将不胜感激
解决方法
这个问题有几个部分,我认为需要解决:
- 在 Kubernetes 环境中有多个
NGINX Ingress Controllers
可供使用。指定使用哪个确切的方法肯定有助于故障排除过程,因为它们的内部工作方式可能存在细微差异,可能会影响您的工作量。
您可以通过关注此主题了解有关此主题(基于 NGINX
的 Ingress
控制器)的更多信息:
附注!
我看到您正在使用这个特定的 Ingress
控制器,正如之前在 StackOverflow 上提出的问题:
- 什么是
default-backend
?
default-backend
简而言之是一个“地方”(Deployment
带有 Pod
和 Service
)所有不匹配的流量{{ 1}} 个资源被发送(例如未知的 Ingress
)。
您的 path
资源显示以下消息:
Ingress
因为它找不到名为 default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
的 Endpoint
(关联的 default-http-backend
同名)。要解决此问题,您需要配置此类资源。
此类 Service
实现的示例:
-
default-backend
资源,它是Ingress
至于您的 path
资源。为您正在部署的资源包含 Ingress
清单至关重要。其他社区成员更容易看到全貌和您面临的潜在问题。
通过部分:YAML
可以看出:
$ kubectl describe ingress ingress-svc
有一个主机:Rules:
Host Path Backends
---- ---- --------
auditmee.com
/swagger-ui.html springboot-service:8080 (192.168.157.76:8080,...)
,它有一个非常具体的路径(确切地说是文件)。 这样的设置将允许您的客户仅访问 HOST.com
。如果您有其他一些文件,则不可用:
-
swagger-ui.html
curl http://HOST/swagger-ui.html -
200
curl http://HOST/super-awesome-icon.png
附注!
另外,请检查您正在为您的资源提供哪种协议 404
/HTTP
。
由于我们不知道您的工作负载,您可以尝试将 HTTPS
设置为 path
。此规则将允许将 path: /
的所有资源请求传递给您的 HOST
。
我鼓励您查看可用文档以获取更多资源:
- Kubernetes.io: Docs: Concepts: Services networking: Ingress
- Github.com: Nginxinc: Kubernetes Ingress:
我还发现显示 springboot-service
控制器的日志在故障排除方面非常有效:
Ingress
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。