What is a Node?
A Node is a machine; a Node is where the Pods are running. But under the hood, what is a Node?
A Node could be a bare-metal machine
You need to either manually provision the bare-metal machine, or use some automation tools like Ansible, Ironic, Metal3. Then a container runtime (e.g. containerd) runs Pod/containers on the bare-metal machine.
A Node could be a virtual machine
- could be VMs running on your own bare-metals
- could be VMs running inside your own VMs
- could be cloud VMs, like a AWS EC2 instance or a Google Compute Engine instance.
A Node could be a container
Yes a Node can be a container. If you use kind
to create a cluster, each node is a docker container (kind = Kubernetes IN Docker). If you use minikube, you can also choose to use containers as nodes.
A nested world
If you use GKE:
- Borg (Google's internal cluster management system) runs the backend of GKE/GCE APIs
- GCE API creates VMs on Borg Nodes.
- "We run each hosted VM in a KVM process that runs as a Borg task." https://research.google/pubs/pub43438/
- GKE API manages clusters using GCE VMs.
- Your Pods are running on GCE VMs.
If you use kind on a Cloud VM:
- your Pods (managed by containerd) are running in a container (managed by Docker)
- the Docker container is running on a VM.
- The VM is running on a Cloud provider's bare-metal machines.