Kubernetes: ingress default-back-end not found錯誤
阿新 • • 發佈:2021-02-18
我建了一個 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,顯示如下:
問題解決了。