<p>When a Google Container Engine cluster is created, Container Engine creates a Compute Engine managed instance group to manage the created instances. These instances are from Google Compute engine, which means, they are Virtual machines.</p>

<p>But we read in the doc page: "VMs are heavyweight and non-portable. The New Way is to deploy containers based on operating-system-level virtualization rather than hardware virtualization" isn't a contradiction? correct me if I'm wrong.
We use containers because they are extremely fast (either in boot time or tasks execution) compared to VMs, and they save a lot of space storage. So if we have one node(vm) that can supports 4 containers max, our clients can rapidly lunch 4 containers, but beyond this number, gcloud autoscaler will need to lunch a new node(vm) to support upcoming containers, which incurs some tasks delay. </p>

<p>Is it impossible to launch containers over physical machines?</p>

<p>And what do you recommend for running critical time execution tasks? </p>

<p>It is definitely possible to launch containers on physical machines. In fact, according to the <a href="https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43438.pdf" rel="nofollow">Borg paper</a> ( the design of which heavily influenced Container Engine/Kubernetes ), this is the norm within Google's own infrastructure:</p>

<blockquote>
  <p>Each task maps to a set of Linux processes running in a container on a
  machine [62]. The vast majority of the Borg workload does not run
  inside virtual machines (VMs), because we don’t want to pay the cost
  of virtualization. Also, the system was designed at a time when we had
  a considerable investment in processors with no virtualization support
  in hardware.</p>
</blockquote>

<p>Since Container Engine is hosted within GCP, VMs are used to facilitate dynamic provisioning. However, these VMs are long lived compared to the lifetime of containers scheduled onto them. Pods of containers may be scheduled on and off of these VMs and jobs run to completion. However, VMs are torn down when clusters are upgraded or re-sized. </p>
