Does Cluster Autoscaler (CA) respect node affinity when selecting node groups to scale up?
CA respects nodeSelector and requiredDuringSchedulingIgnoredDuringExecution in nodeAffinity given that you have labelled your node groups accordingly. If there is a pod that cannot be scheduled with either nodeSelector or requiredDuringSchedulingIgnoredDuringExecution specified, CA will only consider node groups that satisfy those requirements for expansion.
However, CA does not consider "soft" constraints like preferredDuringSchedulingIgnoredDuringExecution when selecting node groups. That means that if CA has two or more node groups available for expansion, it will not use soft constraints to pick one node group over another.
You may find this FAQ on Cluster Autoscaler helpful. Let me know if you have further questions.