<p>I'm currently learning about Kubernetes and still trying to figure it out. I get the general use of it but I think that there still plenty of things I'm missing, here's one of them. If I want to run Kubernetes on my public cloud, like GCE or AWS, will Kubernetes spin up new VMs by itself in order to make more compute for new pods that might be needed? Or will it only use a certain amount of VMs that were pre-configured as the compute pool. I heard Brendan say, in his talk in CoreOS fest, that Kubernetes sees the VMs as a "sea of compute" and the user doesn't have to worry about which VM is running which pod - I'm interested to know where that pool of compute comes from, is it configured when setting up Kubernetes? Or will it scale by itself and create new machines as needed?</p>

<p>I hope I managed to be coherent. 
Thanks! </p>

<p>Kubernetes supports scaling, but not auto-scaling. The addition and removal of new pods (VMs) in a Kubernetes cluster is performed by <a href="https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/replication-controller.md" rel="nofollow">replication controllers</a>. The size of a replication controller can be changed by updating the <code>replicas</code> field. This can be performed in a couple ways:</p>

<ol>
<li>Using kubectl, you can use the <a href="https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/kubectl_scale.md" rel="nofollow">scale</a> command.</li>
<li>Using the <a href="http://kubernetes.io/third_party/swagger-ui/#!/v1beta3/patchReplicationController" rel="nofollow">Kubernetes API</a>, you can update your config with a new value in the <code>replicas</code> field.</li>
</ol>

<p>Kubernetes has been designed for auto-scaling to be handled by an external auto-scaler. This is discussed in <a href="https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/replication-controller.md#responsibilities-of-the-replication-controller" rel="nofollow">responsibilities of the replication controller</a> in the Kubernetes docs.</p>
