Welcome to the Linux Foundation Forum!

Lab 10.1 - <error: endpoints "default-http-backend" not found> - Solved

Hi,

K8s version

Client Version: v1.18.1
Server Version: v1.18.1

Traefik version

curl 172.168.100.101:8080/api/version
{"Version":"v1.7.24","Codename":"maroilles"}
  • I was getting 404 page not found when curl -H "Host: www.example.com" http://k8smaster/
  • kubectl describe ingress/ingress-test

    Name:             ingress-test
    Namespace:        default
    Address:          
    Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
    Rules:
      Host             Path  Backends
      ----             ----  --------
      www.example.com  
                       /   secondapp:80 (192.168.245.98:80)
    Annotations:       kubernetes.io/ingress.class: traefik
    Events:            <none>
    

Researching I found this option for ingress.rule.yaml. It changes the "Default backend" option. I've adapted to our exercise and it started working.

....
spec:
  backend:
    serviceName: secondapp
    servicePort: 80
  rules:
....

The default backend has changed.

kubectl describe ingress ingress-test

Name:             ingress-test
Namespace:        default
Address:          
Default backend:  secondapp:80 (192.168.245.98:80)
Rules:
  Host             Path  Backends
  ----             ----  --------
  www.example.com  
                   /   secondapp:80 (192.168.245.98:80)
  thirdpage.org    
                   /   thirdpage:80 (192.168.245.99:80)
Annotations:       kubernetes.io/ingress.class: traefik
Events:            <none>

Comments

  • chrispokorni
    chrispokorni Posts: 2,155

    Hi @turnes,

    The default-backend is responsible to deliver the 404-page-not-found error page when you are trying to access a Service that does not have a rule defined or a Service that has not been configured correctly.

    By overwriting the default-backend you are forcing the Ingress to send all bad requests to the secondapp Service. This did not solve the actual issue you were facing earlier, it only introduced a shortcut. When troubleshooting an Ingress, you have to follow the components that are part of that connection: Pod, Service, and Ingress.

    The first step would be to make sure that the Pod is running, and you can talk to the Pod directly via its port 80.

    The second step would be to make sure that the Service is running, that the Endpoint displays IP address(es) and you can access the Pod via the Service; if you cannot, then there is a label/selector mismatch or the Service's targetPort does not match the Pod's containerPort.

    Then, the final step is to test through the Ingress. If not successful, revisit the Ingress rule and verify for spelling errors, and ensure the Ingress' servicePort matches the Service's port. Re-deploying the Ingress also helps, when all else seems to be correct.

    Regards,
    -Chris

  • serewicz
    serewicz Posts: 1,000

    Hello,

    You may also want to check the version of Traefik you are using. It looks like you are using 1.7.24, instead of what the course and included YAML file declare, which is 1.7.13. The software is rather dynamic, so each version may have important differences in configuration files.

    Regards,

  • I'm trying to deploy a sample application with Ingress E2E - TLS.

    I'm having the same issue. Been googling for almost 2 days. Still having the same Default backend error
    Default backend: default-http-backend:80 ()

    My pods are up and running:
    website-deployment-57867dd67c-5dxwd 1/1 Running 0 43m
    website-deployment-57867dd67c-sz7bf 1/1 Running 0 43m

    My service info
    Name: website-service
    Namespace: default
    Labels:
    Annotations:
    Selector: app=website
    Type: ClusterIP
    IP Families:
    IP: 10.0.125.26
    IPs:
    Port: 8443/TCP
    TargetPort: 8443/TCP
    Endpoints: 192.172.1.123:8443,192.172.1.53:8443
    Session Affinity: None
    Events:

    When I describe my ingress
    Name: website-ingress
    Namespace: default
    Address: 40.70.164.183
    Default backend: default-http-backend:80 ()
    TLS:
    frontend-tls terminates website.com
    Rules:
    Host Path Backends
    ---- ---- --------
    website.com
    / website-service:8443 (192.172.1.123:8443,192.172.1.53:8443)
    Annotations: appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: backend-tls
    appgw.ingress.kubernetes.io/backend-hostname: backend
    appgw.ingress.kubernetes.io/backend-path-prefix: /
    appgw.ingress.kubernetes.io/backend-protocol: https
    appgw.ingress.kubernetes.io/ssl-redirect: true
    kubernetes.io/ingress.class: azure/application-gateway
    Events:

    Thoughts!?

  • serewicz
    serewicz Posts: 1,000

    Are you using Azure for the labs? There are many, many networking issues with Azure. We do not support running labs in it due to the many ongoing issues.

    The labs will work on GCE, AWS EC2, Digital Ocean, Virtual Box, KVM, Bare metal, and VMWare. If the lab that works on all of these platforms but does not work on Azure, it's not the labs or Kubernetes at fault.

    If you are using something other than Azure, what Ingess controller are you using? Do you get a 404 error when you go to nodeIP:80?

    What exercise and step is not working?

    Regards,

  • azach78
    azach78 Posts: 2
    edited January 2021

    Yes using Azure, and yes I'm getting 404 error :/

Categories

Upcoming Training