Kubernetes has the cluster level auto scaler called Cluster Autoscaler *1. And the Cluster Autoscaler can call APIs provided by Cluster Providers.
You may find an environment what you use *2.
In addition, Cluster API *3 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 what you use *4.
If the environment not on the list, I have no idea how to auto scale a cluster on-premise environment.
When nodes are autoscale?
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.
Monitoring is required?
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.
*1: https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler
*2: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/cloud_provider.go#L30
*3: https://github.com/kubernetes-sigs/cluster-api
*4: https://cluster-api.sigs.k8s.io/reference/providers.html