在Ingress资源中找不到端点“ default-http-backend”

问题描述

当我尝试为Kubernetes集群创建入口资源时(已经创建了入口控制器),正在创建入口资源/规则,并且能够在kubectl中看到。 但是当我执行kubectl描述时,我看到一个错误:

默认后端:default-http-backend:80()

这是预期的吗?我什至无法使用在Ingress资源中定义的DNS名称(hotel.example.com)连接到我的应用程序。是否由于此http-backend错误? 如果没有,请提出任何使应用程序连接的建议!

[dockuser@kubemaster ingress-controller-domain-name-or-path-based-routing]$ kubectl describe ing hotel-ingress --namespace hotel
Name: hotel-ingress
Namespace: hotel
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends

hotel.example.com
/ hotel-svc:80 (10.36.0.2:80,10.44.0.2:80)
Annotations: Events:


apiVersion: v1
kind: Namespace
metadata:
name: hotel

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hotel-ingress
namespace: hotel
spec:
rules:

host: hotel.example.com
http:
paths:
path: /
backend:
serviceName: hotel-svc
servicePort: 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: hotel
namespace: hotel
spec:
replicas: 2
selector:
matchLabels:
app: hotel
template:
metadata:
labels:
app: hotel
spec:
containers:
- name: hotel
image: nginxdemos/hello:plain-text
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: hotel-svc
namespace: hotel
spec:
ports:

port: 80
targetPort: 80
selector:
app: hotel

解决方法

default-http-backend命名空间中创建kube-system服务,错误将消失。

查看更多:ngress-nginx-troubleshooting

,

我意识到这已经得到了回答(为后代添加)但是在我的情况下我已经跑了

minikube addons enable ingress

但系统仍然缺少default-http-backend

我怀疑当时使用了端口或类似端口的冲突,并且默认的 http-backend 无法创建。

经过多次尝试纠正该问题后,我终于发现执行以下命令为我解决了该问题:

kubectl apply -f https://raw.githubusercontent.com/roelal/minikube/5093d8b21c0931a6c63fa448538761b4bf100ee0/deploy/addons/ingress/ingress-rc.yaml
kubectl apply -f https://raw.githubusercontent.com/roelal/minikube/5093d8b21c0931a6c63fa448538761b4bf100ee0/deploy/addons/ingress/ingress-svc.yaml

来自https://github.com/roelal/minikube/tree/5093d8b21c0931a6c63fa448538761b4bf100ee0/deploy/addons/ingress

PS: 请注意,nginx-load-balancer-conf 已经存在配置映射,所以我没有添加。

PPS: 其次,这只是为了在本地笔记本电脑上进行教育,因此请对其可信度持保留态度。

,

我尝试按照以下文档步骤操作,效果很好: https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

,

如果您使用的是minikube。

可能是因为您尚未启用入口。

请在下面尝试

minikube插件启用了入口

,

我认为可以忽略缺少的默认后端。至少在 k8s 下具有负载平衡工作的 Openshift 风格路由不需要它,如 this answer 中所述。

,

您可能希望像这样将 defaultBackend 添加为 Ingress 定义的一部分

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: default-backend-ingress-example
spec:
  defaultBackend:
    service:
      name: hotel-svc
      port:
        number: 80

环境

minikube version: v1.21.0
kubectl version: v1.20.7

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...