Node Controller
The node controller has one simple job. It links or unlinks a Machine to the underlying
core k8s Node object if an optional annotation cluster.k8s.io/machine is present on the Node. The
decision to add the annotation is left to each infrastructure-specific provider. When the
controller links a Machine, it assigns the machine's Status.NodeRef to the Node's
objectRef.
The simplest way for Infrastructure-specific providers to add this support is to annotate
nodes in their node bootup script as part of the kubeadm join operation (via a commandline
parameter).
Node Controller Semantics
The node controller is very simple. In the current design, a Machine will exist before the
backing Node is created. When a node is created and ready, the controller checks if the
annotation exist. If it does, it links Node to the Machine. If the Node is slated for
deletion, it unlinks the Node from the Machine.