<ol>
<li><p>is there a cluster auto-scaler for an on-premise environment?</p>
</li>
<li><p>if yes, how does it behave and what are its limitations? What does it do when it doesn't have enough resources to create new pods?</p>
</li>
<li><p>if I work on-prem, is it better to manage it by myself and check the Kubernetes resources every time before creating new pods?</p>
</li>
</ol>

Ohad
<p>Kubernetes has the cluster level auto scaler called <a href="https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler" rel="nofollow noreferrer"><code>Cluster Autoscaler</code></a>. And the Cluster Autoscaler can call APIs provided by Cluster Providers.</p>
<p>You may find an environment what you <a href="https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/cloud_provider.go#L30" rel="nofollow noreferrer">use</a>.</p>
<p>In addition, <a href="https://github.com/kubernetes-sigs/cluster-api" rel="nofollow noreferrer">Cluster API</a> is the one of the provider can be used cluster autoscaler. Cluster API is an API for managing a kubernetes cluster. You may find an environment that you <a href="https://cluster-api.sigs.k8s.io/reference/providers.html" rel="nofollow noreferrer">use</a>.</p>
<p>If the environment not on the list, I have no idea how to auto scale a cluster on-premise environment.</p>
<p><strong>When nodes are autoscale?</strong></p>
<p>If a cluster has no enough resources for Pods and the Pods are becoming Pending state. Cluster Autoscaler extends a node which is suited for the Pods.</p>
<p><strong>Monitoring is required?</strong></p>
<p>I believe that even if the Cluster Autoscaler manages nodes for you, you should monitor your cluster resources. Because, the Cluster Autoscaler is not perfect and you may need to add nodes by yourself. For example, if you have a plan for failure, you may want to keep certain of free resources. Cluster Autoscaler doesn't care free resources. It just works when the resource is shortage.</p>
