diff --git a/Vagrantfile b/Vagrantfile
index 0d507674e3a4ac468a739da4b57e2388a922358b..a3cf28d495ccd904afe3a27cacca0868f9b7a5e1 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -61,9 +61,9 @@ $multi_networking ||= "False"
 $download_run_once ||= "True"
 $download_force_cache ||= "False"
 # The first three nodes are etcd servers
-$etcd_instances ||= $num_instances
+$etcd_instances ||= [$num_instances, 3].min
 # The first two nodes are kube masters
-$kube_master_instances ||= $num_instances == 1 ? $num_instances : ($num_instances - 1)
+$kube_master_instances ||= [$num_instances, 2].min
 # All nodes are kube nodes
 $kube_node_instances ||= $num_instances
 # The following only works when using the libvirt provider