-
Notifications
You must be signed in to change notification settings - Fork 348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Node Port issue on Linux Minion #611
Comments
What is the output of |
You start with: On master:
On Node:
OVS
Logs:
|
TL;DR: I came to realize that the node port is only accessible from outside the respective machine. The node ports on my linux node actually work when accessed outside the machine. But on the Windows node only one of two node ports is accessible. @girishmg Yes, core DNS pods are up and running. The output of
I am not sure where to lookup the commit id, it seems the build folder is under /tmp which probably gets cleaned when I reboot the machine. But according to the ubuntu.yml it should use the @shettyg When I run
On further debugging I realized, that I cannot access the node port from the machine itself (connection refused). However, when I am on the master (172.33.75.8) I can access 172.33.69.225:32306 (my linux node), but not 172.33.66.23:32306 (my windows node). But puzzles me a bit is the fact that two days ago my Load Balancer Target group was showing the linux node as unhealthy and not it shows it as healthy (though I did not change anything). Its possible that I did not give the load balancer enough time to perform the target health checks. Executing
I can see both service ports in the output (e.g. 32306 and 32114). On the Windows node I could not find a line for port 32306 but there is one for 32114:
The chassis for both linux and windows nodes are correctly registered in SB DB and ovn-controller is running on both linux and windows nodes. I am not sure where I can find the log files on the Windows machine, In the For reference here is the output of all services:
|
I think this behavior is expected. That is, you cannot access a service using <k8s_node_ip:node_port> from the k8s node itself. On every K8s node we create a management port that provides access to all the PODs from the node. We then add the following routes.
192.168.2.2 is the management port (on br-int) and 192.168.2.0/24 is the overlay subnet. Say, we have this service:
When you now try to access 10.0.1.16:30224, because of routing rules, the packet is forwarded to the host stack directly. This fails because there is no TCP port listening on port 30224 and hence you get connection refused.
However, if you access the Nodeport from within a pod it works.
So, within a pod this succeeds and a tcpdump tells you why
|
@girishmg Thanks for these explanations. I understand now why the port is not available from the host itself. But what I still do not understand is why the Dashboard service port is not accessible on the Windows machine. As I understand services, a service port should be reachable on any node no matter where the service is actually running. If the service does not run on the node itself, incoming packets would be routed to the correct machine. At least thats how I understand it. But for some reason, my dashboard services which runs on the Linux minion and has service port |
Your understanding above is correct. That said, I am not sure why on the Windows machine you are not able to see the ports on Windows machine. I haven't setup a K8s cluster with Windows as one of the nodes, so I don't know. |
I have reexecuted the ansible scripts on my cluster today and rebooted the nodes and now all NodePorts are accessible, both from Windows and Linux and I can also access a Linux Pod's Node Port on Windows and vice versa. Either there was a temporary glitch on my setup, or some recent commits have resolved the issue. |
I have problems accessing the node port of a service running on my linux minion (ip-172-33-69-225):
How can I debug this problem? I checked all the logs but could not find any issue.
The text was updated successfully, but these errors were encountered: