NTP runs fairly decently in a VM. Don't take my word for it — look at the graphs of my servers:
Here's my Google VM, notice the jitter is within +/- 5 milliseconds:
http://www.pool.ntp.org/scores/104.155.144.4
Here's my Hetzner VM (Germany). +/- 10 milliseconds, though I can't help but suspect the distance from the monitoring station (Los Angeles) may have more to do with it than being a VM:
http://www.pool.ntp.org/scores/78.46.204.247
Here's my AWS VM. Much worse than Google in that it's +/- 50 milliseconds, but still good enough to pass muster with pool.ntp.org:
http://www.pool.ntp.org/scores/52.0.56.137
Here's my Azure VM. It's in Singapore, and I re-deployed it last night, so the numbers are still coming in, but it has a pretty tight distribution: