diff --git a/services/discovery.go b/services/discovery.go
index 6bfc3e8cab73de387c07e641e9e7fa04fa19e809..719d0205217775a1531b5b2033b63fbaa7071230 100644
--- a/services/discovery.go
+++ b/services/discovery.go
@@ -22,6 +22,7 @@ var memberlist = &Unit{
 		for {
 			<-events
 			c.nodes = ml.Nodes()
+			u.Manager.Logger.Info("memberlist metadata received", "nodes", c.nodes)
 			u.Manager.Trigger()
 		}
 	},
@@ -29,7 +30,7 @@ var memberlist = &Unit{
 		// Try and find master node if required
 		if c.masterNode == nil {
 			for _, node := range c.nodes {
-				if node.Role == "master" {
+				if node.Role == "master" || node.Role == "full" {
 					u.Manager.Logger.Info("found remote master", "name", node.Name)
 					c.masterNode = node
 					u.Manager.Trigger()
diff --git a/services/manager.go b/services/manager.go
index abdf48f6df265bf505fbd4c6442dd34914ff7020..b25ae87a3c79188f69455952da11a2cafee9ac92 100644
--- a/services/manager.go
+++ b/services/manager.go
@@ -101,6 +101,8 @@ func NewManager(settings *ClusterSettings, node *NodeSettings, logger logr.Logge
 		units = append(units, memberlist, vpn, kubeApiserver, kubeControllerManager, kubeScheduler)
 	case "node":
 		units = append(units, memberlist, vpn, kubeKubelet)
+	case "full":
+		units = append(units, memberlist, vpn, kubeApiserver, kubeControllerManager, kubeScheduler, kubeKubelet)
 	}
 	return daeman.NewManager(cluster, units, logger), nil
 }