A Kubernetes cluster is a set of nodes that run containerized applications.
Containerized applications are more lightweight and flexible than virtual machines, and they share the operating system. In this way, Kubernetes clusters allow for applications to be more easily developed, moved, and managed. Kubernetes clusters allow containers to run across multiple machines and environments: Virtual, physical, cloud-based, and on-premises. For more information about Kubernetes clusters and its components, see the Kubernetes documentation at https://kubernetes.io/docs/concepts/overview/.
There must be a minimum of one controller node and one worker node for a Kubernetes cluster to be operational. For production and staging, the cluster is distributed across multiple worker nodes. For testing, the components can all run on the same physical or virtual node.