Yes, it’s good to put controlplane and etcd on VMs.
Yes, three etcd nodes is a good number. Chris Kim, an engineer at Rancher, says “the number of etcd nodes you have for a cluster actually really only increases your fault tolerance, rather than increasing performance. Conventionally speaking, 3 is the magic number because you need a majority of nodes live and talking in order to maintain quorum, and I wouldn’t necessarily recommend scaling past 5 or 7”
It’s better to put worker roles on a separate host so that you can get more scalability