<p>I started looking more closely to kubernetes, containers and virtualization technologies since my employer has decided to move everything to Azure and AKS.</p>
<p>From what I understand, everything in AKS will be running <a href="https://learn.microsoft.com/en-us/azure/aks/concepts-clusters-workloads#nodes-and-node-pools" rel="nofollow noreferrer">inside VM's.</a></p>
<p>The same applies to GKE and EKS.
Amazon provides some bare metal instances but I am not sure whether this works with kubernetes.</p>
<p>Doesn't that hurt performance?
The promise of containers was that you run on a lighter virtualization layer instead on a full blown vm.</p>
<p>Doesn't running containers inside vm's beat the purpose?</p>

<p>A (Linux) container is a set of 1 or more processes that are isolated from the rest of the system through <a href="https://en.wikipedia.org/wiki/Linux_namespaces" rel="nofollow noreferrer">Linux namespaces</a>. Namespaces are a feature of the Linux kernel that partitions kernel resources (mounts, network devices etc) such that one set of processes sees one set of resources while another set of processes sees a different set of resources. For example, each container sees a different root file system (the container image) and its process tree is isolated from the rest of the process tree of the host.</p>
<p>Apart from being isolated through namespaces, the container is also limited in how much resources it can use by <a href="https://en.wikipedia.org/wiki/Cgroups" rel="nofollow noreferrer">cgroups</a>, also a feature of the Linux Kernel.</p>
<p>In other words, <strong>containers aren't really &quot;virtualization&quot;</strong>, since all it is using is native Kernel functionality and the overhead of using container (once started) is extremely small, once it is bootstrapped it runs just like any other process.</p>
<p>Kubernetes is a system for automating deployment, scaling, and management of containerized applications and it needs somewhere to host the containers. This infrastructure can be either bare metal or VM's.</p>
<p><strong>Thus running containerized applications inside a VM brings the same benefits as running them on bare metal (isolation and resource consumption limits)</strong>. Whether to provide compute resources to the cluster through bare metal or VM's is another questions, each having its pros and cons, but <strong>the pros and cons of VM's vs bare metal do not depend on whether you run containers or regular applications and processes</strong> on them.</p>
<p>Your observation that AKS; GKE and EKS are using VM's to provide compute resources to the cluster is correct. It abstracts the physical hardware away  and is currently the standard way by public cloud providers to provide compute resources</p>
