I have a GKE cluster with two preemptible instances and one normal instance. I also have a reserved static IP address. I have very liberal firewall rules that basically open tcp:80 and tcp:443 on all nodes from all IP addresses.
If I assign my IP (http://35.226.235.154/) to one of the preemptible instances, I can access port 80 and 443 of the IP address (as expected). However, if I assign the IP to my normal instance, I can't access port 80 or 443. What am I missing?
EDIT:
So i tried to just access it by a normally assigned IP address, and it still does not work, so it seems like my NodePort service is not really working
You have to have a service listening on either port 80 or 443 to get a response from the node. You should see the open ports whether the external IP address is static or ephemeral. Normally, the node will host pods which (even if they are exposed on port 80) do not link directly to the node without a service in place (such as node port which does not use a load balancer).
You can also connect to another node to see if the ports are responding using the nodes internal IP address (SSH to node 1, test ports of node 2 using the internal IP address). There is no reason for the external IP address to affect whether a service responds on a port.