This patch implements the upgrade logic for kubernetes clusters.
Upgrade is done sequentially, node-by-node, in the order of creation time.
Upgrade operation starts with the CP nodes.
Nodepools need to "incr_upgrade"d separately to start their upgrade process.
For upgrading a node, it creates a new node with upgraded version of k8s, adds it to
the cluster and drains/removes the corresponding old node. There's no actual relation
between the old node and new node in reality.
Co-authored-by: Eren Başak <eren@ubicloud.com>
Co-authored-by: mohi-kalantari <mohi.kalantari1@gmail.com>