Не найдено 404 nginx: Не удается подключиться через входной ip-адрес на мини-кубе

#nginx #kubernetes #kubernetes-helm #nginx-ingress #helm3

Вопрос:

Привет, я новичок в Kubernetes и helm и недавно попробовал один учебник от Pluralsight.

Согласно учебнику, мой входной файл выглядит следующим образом —

 apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ .Release.Name }}-{{ .Chart.Name }}-ingress
spec:
  rules:
{{- range .Values.ingress.hosts }}
  - host: {{ $.Release.Name }}.{{ .host.domain }}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: {{ $.Release.Name}}-{{ .host.chart }}
            port:
              number: 80
{{- end }}
 

Когда я пытаюсь подключиться к ip-адресу minikube, он выдает мне эту ошибку —

 404 Not Found
----
nginx
 

Я установил диаграмму управления с помощью гостевой книги helm install dev
Это мой журнал стручков и входа —
Команда — kubectl get ingress

 NAME                    CLASS    HOSTS                                                    ADDRESS          PORTS   AGE
dev-guestbook-ingress   <none>   dev.frontend.minikube.local,dev.backend.minikube.local   192.168.99.104   80      136m
 

Команда — kubectl describe ingress dev-guestbook-ingress

 Name:             dev-guestbook-ingress
Namespace:        default
Address:          192.168.99.104
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                         Path  Backends
  ----                         ----  --------
  dev.frontend.minikube.local
                               /*   dev-frontend:80 (172.17.0.3:4200)
  dev.backend.minikube.local
                               /*   dev-backend:80 (172.17.0.5:3000)
Annotations:                   meta.helm.sh/release-name: dev
                               meta.helm.sh/release-namespace: default
Events:
  Type    Reason  Age                From                      Message
  ----    ------  ----               ----                      -------
  Normal  Sync    32m (x2 over 33m)  nginx-ingress-controller  Scheduled for sync
 

Это журнал моего входного модуля после использования команды —

 kubectl logs ingress-nginx-controller-69bdbc4d57-jnswj  --namespace=ingress-nginx
 
 -------------------------------------------------------------------------------
NGINX Ingress controller
  Release:       v1.0.0-beta.1
  Build:         a091b01f436b4ab4f3d04264df93962432a02450
  Repository:    https://github.com/kubernetes/ingress-nginx
  nginx version: nginx/1.20.1

-------------------------------------------------------------------------------

W0928 13:00:25.824832       8 client_config.go:615] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0928 13:00:25.825340       8 main.go:221] "Creating API client" host="https://10.96.0.1:443"
W0928 13:00:56.974273       8 main.go:262] Initial connection to the Kubernetes API server was retried 1 times.
I0928 13:00:56.974428       8 main.go:265] "Running in Kubernetes cluster" major="1" minor="22" git="v1.22.2" state="clean" commit="8b5a19147530eaac9476b0ab82980b4088bbc1b2" platform="linux/amd64"
I0928 13:00:57.378459       8 main.go:104] "SSL fake certificate created" file="/etc/ingress-controller/ssl/default-fake-certificate.pem"
I0928 13:00:57.401933       8 ssl.go:531] "loading tls certificate" path="/usr/local/certificates/cert" key="/usr/local/certificates/key"
I0928 13:00:57.426834       8 nginx.go:253] "Starting NGINX Ingress controller"
I0928 13:00:57.451326       8 event.go:282] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"ingress-nginx", Name:"udp-services", UID:"3fd79ae9-35c2-4147-aa8c-b8bdb94a46e7", APIVersion:"v1", ResourceVersion:"787", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap ingress-nginx/udp-services
I0928 13:00:57.451353       8 event.go:282] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"ingress-nginx", Name:"ingress-nginx-controller", UID:"dc2450e0-6542-4b42-81e3-0b68598bdb8d", APIVersion:"v1", ResourceVersion:"785", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap ingress-nginx/ingress-nginx-controller
I0928 13:00:57.453791       8 event.go:282] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"ingress-nginx", Name:"tcp-services", UID:"c22ae05e-ac70-47da-9573-087394876f41", APIVersion:"v1", ResourceVersion:"786", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap ingress-nginx/tcp-services
I0928 13:00:58.543719       8 store.go:361] "Ignoring ingress because of error while validating ingress class" ingress="default/dev-guestbook-ingress" error="ingress does not contain a valid IngressClass"
I0928 13:00:58.640831       8 nginx.go:295] "Starting NGINX process"
I0928 13:00:58.640960       8 leaderelection.go:243] attempting to acquire leader lease ingress-nginx/ingress-controller-leader...
I0928 13:00:58.641293       8 nginx.go:315] "Starting validation webhook" address=":8443" certPath="/usr/local/certificates/cert" keyPath="/usr/local/certificates/key"
I0928 13:00:58.641425       8 controller.go:150] "Configuration changes detected, backend reload required"
I0928 13:00:58.657350       8 leaderelection.go:253] successfully acquired lease ingress-nginx/ingress-controller-leader
I0928 13:00:58.657383       8 status.go:84] "New leader elected" identity="ingress-nginx-controller-69bdbc4d57-jnswj"
I0928 13:00:58.668104       8 status.go:204] "POD is not ready" pod="ingress-nginx/ingress-nginx-controller-69bdbc4d57-jnswj" node="minikube"
I0928 13:00:59.289049       8 controller.go:167] "Backend successfully reloaded"
I0928 13:00:59.289288       8 controller.go:178] "Initial sync, sleeping for 1 second"
I0928 13:00:59.289389       8 event.go:282] Event(v1.ObjectReference{Kind:"Pod", Namespace:"ingress-nginx", Name:"ingress-nginx-controller-69bdbc4d57-jnswj", UID:"84ad1680-72e1-4733-a1e7-9c314527d810", APIVersion:"v1", ResourceVersion:"2634", FieldPath:""}): type: 'Normal' reason: 'RELOAD' NGINX reload triggered due to a change in configuration
I0928 13:06:22.563182       8 main.go:101] "successfully validated configuration, accepting" ingress="dev-guestbook-ingress/default"
I0928 13:06:22.568356       8 store.go:396] "creating ingress" ingress="default/dev-guestbook-ingress" ingressclass="nginx"
I0928 13:06:22.568860       8 controller.go:150] "Configuration changes detected, backend reload required"
I0928 13:06:22.569014       8 event.go:282] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"dev-guestbook-ingress", UID:"519a99af-aec5-4316-ae38-d1bcc1127c59", APIVersion:"networking.k8s.io/v1", ResourceVersion:"3001", FieldPath:""}): type: 'Normal' reason: 'Sync' Scheduled for sync
I0928 13:06:22.639189       8 controller.go:167] "Backend successfully reloaded"
I0928 13:06:22.639649       8 event.go:282] Event(v1.ObjectReference{Kind:"Pod", Namespace:"ingress-nginx", Name:"ingress-nginx-controller-69bdbc4d57-jnswj", UID:"84ad1680-72e1-4733-a1e7-9c314527d810", APIVersion:"v1", ResourceVersion:"2634", FieldPath:""}): type: 'Normal' reason: 'RELOAD' NGINX reload triggered due to a change in configuration
I0928 13:06:58.702705       8 status.go:284] "updating Ingress status" namespace="default" ingress="dev-guestbook-ingress" currentValue=[] newValue=[{IP:192.168.99.104 Hostname: Ports:[]}]
I0928 13:06:58.708447       8 event.go:282] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"dev-guestbook-ingress", UID:"519a99af-aec5-4316-ae38-d1bcc1127c59", APIVersion:"networking.k8s.io/v1", ResourceVersion:"3034", FieldPath:""}): type: 'Normal' reason: 'Sync' Scheduled for sync
192.168.99.1 - - [28/Sep/2021:13:07:19  0000] "GET / HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" 444 0.001 [upstream-default-backend] [] 127.0.0.1:8181 548 0.000 404 0fa63d31eee2d30a43ec3e4a810692e2
192.168.99.1 - - [28/Sep/2021:13:07:19  0000] "GET /favicon.ico HTTP/1.1" 404 548 "http://dev.backend.minikube.local/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" 399 0.000 [upstream-default-backend] [] 127.0.0.1:8181 548 0.000 404 7578f34eb36a0624571b59ace7874748
192.168.99.1 - - [28/Sep/2021:13:27:37  0000] "HEAD / HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31" 287 0.001 [upstream-default-backend] [] 127.0.0.1:8181 0 0.001 404 de62ff190e82ba05a6614dd727f1170a
192.168.99.1 - - [28/Sep/2021:13:27:40  0000] "GET / HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31" 458 0.001 [upstream-default-backend] [] 127.0.0.1:8181 548 0.001 404 a4ebeb4dfadea97778a6394e218e99b0
192.168.99.1 - - [28/Sep/2021:13:27:40  0000] "GET /favicon.ico HTTP/1.1" 404 548 "http://dev.frontend.minikube.local/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36 Edg/94.0.992.31" 414 0.001 [upstream-default-backend] [] 127.0.0.1:8181 548 0.000 404 e39c1bbc38591ec1e33ba0ca074e8127
I0928 13:32:41.441620       8 main.go:101] "successfully validated configuration, accepting" ingress="dev-guestbook-ingress/default"
I0928 13:32:41.445673       8 store.go:399] "removing ingress because of unknown ingressclass" ingress="default/dev-guestbook-ingress"
I0928 13:32:41.445785       8 controller.go:150] "Configuration changes detected, backend reload required"
I0928 13:32:41.565590       8 controller.go:167] "Backend successfully reloaded"
I0928 13:32:41.566233       8 event.go:282] Event(v1.ObjectReference{Kind:"Pod", Namespace:"ingress-nginx", Name:"ingress-nginx-controller-69bdbc4d57-jnswj", UID:"84ad1680-72e1-4733-a1e7-9c314527d810", APIVersion:"v1", ResourceVersion:"2634", FieldPath:""}): type: 'Normal' reason: 'RELOAD' NGINX reload triggered due to a change in configuration
 

Мой kubernetes veriosn-это —

 Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.4", GitCommit:"3cce4a82b44f032d0cd1a1790e6d2f5a55d20aae", GitTreeState:"clean", BuildDate:"2021-08-11T18:16:05Z", GoVersion:"go1.16.7", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-15T21:32:41Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
 

и моя версия миникуба такова —

 minikube version: v1.23.0
commit: 5931455374810b1bbeb222a9713ae2c756daee10
 

Я добавил ip-адрес мини-куба с хостом в etc/hosts, так что этой проблемы нет

Комментарии:

1. Не публикуйте изображения сообщений об ошибках. Опубликуйте текст.

Ответ №1:

Попробуйте добавить ниже, чтобы исправить эту внутреннюю ошибку по умолчанию, и посмотрите, решит ли это проблему. Кроме того, было бы полезно проверить, совпадают ли ваш IP-адрес входа и IP-адрес мини-куба.

 spec:
  defaultBackend:
    service:
      name: {{ $.Release.Name}}-{{ .host.chart }}
      port:
        number: 80
 

Комментарии:

1. Привет, добавление defaultBackend в спецификацию на самом деле не решает эту проблему. Позже я установил установленный миникуб и начал все с нуля, и эта ошибка больше не повторялась. Я думаю, может быть, это ошибка с моей стороны в аннотациях в файле yaml, или это было потому, что у меня было 2-3 контроллера входа, которые использовались и перезаписывались снова и снова во время практики.

2. Возможный. Приятно это знать. Для меня бэкэнд по умолчанию решен с учетом вышесказанного, но все равно мой вход давал 404. Оказалось, что у версии minikube были проблемы с macOS bigsur.