Here's the doc for resource constraints, called "limits" in Kubernetes.
https://github.com/GoogleCloudPlatform/kubernetes/blob/maste...
The Kubernetes scheduler looks at "fit" and "resource availability" to determine the node a pod will run on. Nodes can also have labels like "high-mem" or "ssd", so you can request a particular type of server (via the the nodeSelector field). More details are in the link above.