I executed the kubectl get nodes -o wide
command, and in the results, there is a column labeled INTERNAL-IP, which displays the internal IP for each node. I would like to understand if the nodes use this IP to communicate with each other and with the control plane (master node) as well.
Additionally, what role does Calico play in this particular scenario?
So a kubernetes cluster is basically setup like a network. Every node/pod gets its own internal ip address and it's own entry in the kube-dns! All nodes and pods can communicate with each other over the given ip addresses (it doesn't matter if its a master node or not) or hostname.
If you use Calico it implements a more advanced networking model using the BGP Protocol (more detailed information about Calcico)
Calcico also brings some other features like: