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

  • chrispokornichrispokorni Posts: 549

    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

  • serewiczserewicz Posts: 652

    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,

Sign In or Register to comment.