Should we always prefer clustering over a master-slave configuration if the goal is high-availability?
Generally, Master-Slave is a disaster recovery setup: when master dies, slave becomes master. Manual intervention is needed or you need some redirection layer, You may also have replication lag built in so that master corruption can be stopped before it hits the slave.

Clustering is high availability: failover is automatic.

You need both HA and DR, not just one. You can have distributed clusters that mix it a bit, but generally the concepts are different.

If the 2 VMs are on the same physical host, this is neither HA nor DR of course.

If you do use clustering, then use Percona. MySQL cluster is broken in RDBMS terms