Welcome to the Linux Foundation Forum!

Lab 11.2 "503 Service Temporarily Unavailable"

Please help I have been stuck in this lab for 3 weeks :(

What is the problem?

When I run the command curl -H "Host: www.external.com" http://10.104.227.79 I Got a "503 Service Temporarily Unavailable". I Followed the steps in Lab

I did lab11.2 step 1

Ingress information:

Systmem configuration:

Ingress pods details:

Comments

  • I have got the response in the ingress.yaml, you have to create a ingress for each web server:

    • ingress-test-nginx
    • ingress-test-httpd

    and link the ingress service in spec: to each server web-one or web-two.

    Greetings

  • chrispokorni
    chrispokorni Posts: 2,356

    Hi @memoros77,

    The ingress exercise exemplifies the name based virtual hosting method to route traffic to multiple services through an ingress controller (myingress-ingress-nginx) paired with an ingress object (ingress-test):

    https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting

    Regards,
    -Chris

  • @chrispokorni thank you very much for your answer, It helped me a lot to clarify the concepts!!! :)

  • Hi @memoros77 , I am stuck in exactly similar situation like yours. What did you do to go past that problem and solve 503 issue ?

  • yrimal
    yrimal Posts: 2
    edited December 2023

    I tried to create two ingres to match to same service, but it looks like we can not map to same host, www.external.com.

    Error from server (BadRequest): error when creating "ingress2.yaml": admission webhook "validate.nginx.ingress.kubernetes.io" denied the request: host "www.external.com" and path "/" is already defined in ingress default/ingress-test
    
  • @yrimal said:
    I tried to create two ingres to match to same service, but it looks like we can not map to same host, www.external.com.

    Error from server (BadRequest): error when creating "ingress2.yaml": admission webhook "validate.nginx.ingress.kubernetes.io" denied the request: host "www.external.com" and path "/" is already defined in ingress default/ingress-test
    

    You should read through the link provided by Chris earlier for the ingress config. How I got this fixed is that I looked with "describe" command to every single component from top to bottom to see where the network stops and then removed everything and started from beginning since I could not figure out how to re-initialize these components.

    My web-two looks like this

    apiVersion: apps/v1 kind: Deployment metadata: name: web-two labels: system: secondary namespace: default spec: selector: matchLabels: system: secondary replicas: 1 template: metadata: labels: system: secondary spec: containers: - image: httpd:2.4 imagePullPolicy: Always name: httpd ports: - containerPort: 80 protocol: TCP

    Which I expose with command "kubectl expose deployment web-two --type=ClusterIP --name=web-two-svc"

    and reference that in my ingress.yml:

    apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-test annotations: nginx.ingress.kubernetes.io/service-upstream: "true" namespace: default spec: ingressClassName: nginx rules: - host: www.external.com http: paths: - backend: service: name: web-two-svc port: number: 80 path: / pathType: ImplementationSpecific

    Hope that helps.

  • Hi @yrimal,

    Just as @mikkokok stated, my earlier response aimed to clarify the purpose of the exercise - to manage traffic to two distinct Services through one single ingress controller paired with one single Ingress object defined by one single manifest. The single ingress manifest stores mapping rules for multiple Services, in our case to Services web-one and web-two respectively.

    The ingress exercise exemplifies the name based virtual hosting method to route traffic to multiple services through an ingress controller (myingress-ingress-nginx) paired with an ingress object (ingress-test):

    https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting

    Regards,
    -Chris

  • rebekah
    rebekah Posts: 9

    The lab is poorly written. At the top we have this directive: "Create two deployments,web-one and web-two, one running httpd, the other nginx. Expose both as ClusterIP services." Then in the ingress yaml it references a service called "secondapp". It should use the name web-two, as that's the default name of the service for the web-two deployment. Then you just need to copy the rules section and in that rule set change the hostname to perhaps www.webone.com and the service name to web-one. And then they should both work.

Categories

Upcoming Training