1. 程式人生 >實用技巧 >其它 >Kubernetes: ingress default-back-end not found錯誤

Kubernetes: ingress default-back-end not found錯誤


技術標籤:devops架構kuberneteslinux

我建了一個 K8s ingress 但是使用下面的命令,確看到 default-back-end not found 錯誤:

kubectl describe ingress [my-ingress-name]

Kubernetes: ingress default-back-end not found錯誤


我們的 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

Kubernetes: ingress default-back-end not found錯誤

解決方案

使用下面的 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,顯示如下:

Kubernetes: ingress default-back-end not found錯誤


問題解決了。