NATS servers are effectively 'message routers'. They constantly get data over the network and send data over the network. If they are JetStream enabled they also constantly read and write to files. They are highly optimized and have many built-in heart-beats, failover and flow control mechanisms. The less the number of layers between the NATS server process, the network and disk, the faster it will work and the less the number of things that can break or places where there can be a configuration error. And you are not relying on some proxy, port mapping or DNS trickery in order for your client applications to be able to connect to the NATS server instance(s) as your container orchestration system moves them around while if running in a VM they could simply be restarted and clients would keep using the same well-known IP address or CNAME.