我建了一个 K8s ingress 但是使用下面的命令,确看到 default-back-end not found 错误:
kubectl describe ingress [my-ingress-name]

我们的 ingress.yaml 如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mongo-express-ingress
# annotations:
# kubernetes.io/ingress.class: "nginx"
#annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: mongo-express.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mongo-express-service
port:
number: 8081
原因
这是因为虽然我们加上了 minikube ingress controller 插件,但是 minikube 没有给我们加上默认的后端 (default back end)。我们需要自己加上这个服务。
我们可以通过下面的命令检查我们是否在命名空间 kube-system 有 default-back-end 服务:
kubectl get service -n kube-system

解决方案
使用下面的 yaml 文件创建 default-back-end 服务:
apiVersion: v1
kind: Service
metadata:
name: default-http-backend
namespace: kube-system
spec:
selector:
app: ingress-nginx-controller
ports:
- protocol: TCP
port: 80
targetPort: 80
使用下面的命令创建服务:
kubectl apply -f backend.yaml
再使用 describe 命令查看 ingress,显示如下:

问题解决了。

在创建K8s ingress时遇到default-back-end not found错误,原因是缺少默认后端服务。解决方案是手动添加default-http-backend服务,通过yaml文件定义并在kube-system命名空间中应用,从而成功解决该问题。

1916

被折叠的 条评论
为什么被折叠?



