It’s very complex with hyper visors and virtualization technology. I don’t fully understand it myself in terms of how resources are allocated across something like aws or azure, but take a look at openshift vs openstack maybe. Openshift is for deploying containers and openstack is virtual machines. Openshift is kubernetes with some customizations for enterprise. Openstack is same for vm’s.
Instances are virtual machines which tend to host an operating system, and a container is lighter and only hosts an application where the code and dependencies are isolated from the underlying operating system it runs on. k8 is kubernetes, which is container orchestration. I think of virtual machines for jobs that scale vertically, while containers are suited to jobs that scale horizontally. But this isn’t necessarily true as kubernetes is starting to get slurm functionality using tools like sunk.
For integrating these things it depends on the application. You can run services in either by exposing ports and interact through API end points that point at them, eg for frontend web app serving data from a database hosted on a server or a container via fastapi. But I’m no dev ops engineer and the field is very complicated. There are many discussions around building micro services (containers) vs monolith (vm). Many decisions depend on the project. Hopefully some actual dev ops engineers will chime in and correct all of the above! xD
At what point does piracy become a cultural obligation? It’s certainly more socially responsible than the so-called owners these days.