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

Ank*_*ati 11 kubernetes kubernetes-ingress

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

默认后端:default-http-backend:80(<错误:未找到端点“default-http-backend”>)

这是预期的吗??我什至无法使用hotel.example.com我在 Ingress 资源中定义的 DNS 名称 ( )连接到我的应用程序。是因为这个 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
Run Code Online (Sandbox Code Playgroud)

nak*_*iin 24

您可能希望添加defaultBackend为 Ingress 定义的一部分,如下所示

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: default-backend-ingress-example
spec:
  defaultBackend:
    service:
      name: hotel-svc
      port:
        number: 80
Run Code Online (Sandbox Code Playgroud)

环境

minikube version: v1.21.0
kubectl version: v1.20.7
Run Code Online (Sandbox Code Playgroud)


Abh*_*ukh 6

如果您使用Minikube,可能是因为您尚未启用 ingress。

请尝试以下命令:

minikube addons enable ingress
Run Code Online (Sandbox Code Playgroud)

或者

minikube addons enable ingress --alsologtostderr
Run Code Online (Sandbox Code Playgroud)


Ray*_*Ray 5

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

minikube addons enable ingress
Run Code Online (Sandbox Code Playgroud)

但系统仍然缺失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
Run Code Online (Sandbox Code Playgroud)

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

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

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


Mal*_*ata -14

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

查看更多:ngress-nginx-故障排除

  • 实际的命令也可以在这里出现。 (10认同)
  • 这是一个如何不回答问题的完美例子。事实上,这是一个没有答案的问题。不要依赖深奥的知识或可能移动或被删除的外部资源链接。我完全不知道我应该在您共享的链接中寻找什么。 (7认同)