default-http-backend 阻止我点击创建的入口规则
default-http-backend is stopping me to hit the ingress rule created
正在安装 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 服务。
任何帮助将不胜感激
这个问题有几个部分,我认为需要解决:
- 有多个
NGINX Ingress Controllers
可以在 Kubernetes 环境中使用。指定确切使用哪一个肯定有助于故障排除过程,因为它们的内部工作可能存在细微差异,可能会影响您的工作量。
您可以通过以下线程阅读有关此主题(NGINX
基于 Ingress
控制器)的更多信息:
A side note!
I saw you're using this specific Ingress
controller as per previous question asked on Whosebug:
- 什么是
default-backend
?
default-backend
简而言之是一个“地方”(Deployment
带有 Pod
和 Service
) 那里所有的流量都没有t 匹配 Ingress
资源已发送 (例如未知 path
)。
您的 Ingress
资源显示以下消息:
default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
因为它找不到名为 default-http-backend
的 Endpoint
(关联的 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
A side note!
Also please check on which protocol HTTP
/HTTPS
are you serving your resources.
由于我们不知道您的工作量,您可以尝试将 path
设置为 path: /
。此规则将允许 HOST
的所有资源请求传递给您的 springboot-service
.
我鼓励您查看可用文档以获取更多资源:
- Kubernetes.io: Docs: Concepts: Services networking: Ingress
- Github.com: Nginxinc: Kubernetes Ingress:
我还发现显示 Ingress
控制器的日志在故障排除方面非常有效:
$ kubectl logs -n NAMESPACE INGRESS-POD-NAME
正在安装 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 服务。
任何帮助将不胜感激
这个问题有几个部分,我认为需要解决:
- 有多个
NGINX Ingress Controllers
可以在 Kubernetes 环境中使用。指定确切使用哪一个肯定有助于故障排除过程,因为它们的内部工作可能存在细微差异,可能会影响您的工作量。
您可以通过以下线程阅读有关此主题(NGINX
基于 Ingress
控制器)的更多信息:
A side note!
I saw you're using this specific
Ingress
controller as per previous question asked on Whosebug:
- 什么是
default-backend
?
default-backend
简而言之是一个“地方”(Deployment
带有 Pod
和 Service
) 那里所有的流量都没有t 匹配 Ingress
资源已发送 (例如未知 path
)。
您的 Ingress
资源显示以下消息:
default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
因为它找不到名为 default-http-backend
的 Endpoint
(关联的 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
A side note!
Also please check on which protocol
HTTP
/HTTPS
are you serving your resources.
由于我们不知道您的工作量,您可以尝试将 path
设置为 path: /
。此规则将允许 HOST
的所有资源请求传递给您的 springboot-service
.
我鼓励您查看可用文档以获取更多资源:
- Kubernetes.io: Docs: Concepts: Services networking: Ingress
- Github.com: Nginxinc: Kubernetes Ingress:
我还发现显示 Ingress
控制器的日志在故障排除方面非常有效:
$ kubectl logs -n NAMESPACE INGRESS-POD-NAME