Welcome to the Linux Foundation Forum!

Lab 7.1: specifying nodePort as 32000 for LoadBalancer doesnt work but omitting it does work

In Lab 7.1 when you setup service.yaml, initially the type is NodePort, and you specify the nodePort as 32000.
When it asks you to change the type to LoadBalancer, I cannot curl to the IP and port 80. It doesn respond. But if I edit service.yaml and remove nodePort=32000 so it auto assigns, then it works perfectly.

Why can't I specify nodePort as 32000 when setting the type to LoadBalancer, as the notes tell us to, as per below:

....
- port: 80
protocol: TCP
nodePort: 32000 #<--if I remove this line, then the service works and I can curl to the ClusterIP or NodePort generated
type: LoadBalancer #<-- Edit this line
selector:
example: second

Comments

  • dleerob
    dleerob Posts: 5
    edited March 2021

    I figured out the problem. Perhaps a bug.

    Once I edit service.yaml, the course tells you to run the following statement in one line to delete and re-create the service:

    kubectl delete svc secondapp ; kubectl create -f service.yaml

    Everything looks fine, the service is deleted and re-created as expected and seems to exist with the new config, but it DOES NOT ACTUALLY WORK.

    If I simply run the DELETE command first in one statement: kubectl delete svc secondapp

    And then I run the CREATE command separately in another statement afterwards: kubectl create -f service.yaml

    It works perfectly!

    Perhaps a timing issue when the commands are run in quick succession. Perhaps k8s hasn't finished cleaning up the delete before it's already creating the service again which causes problems. By running the two commands in separate statements, it gives k8s time to delete the service properly before you create it again.

Categories

Upcoming Training