When debugging strange behavior, my usual first step is to make sure all of my type constraints are explicitly specified, because that way Terraform will give feedback about incorrect values, rather than quietly inferring. In your case, you mentioned that the type you are intending is a map of map of strings, so the appropriate declaration would be the following:
variable "labels" {
type = map(map(string))
}
The .tfvars example you showed seems to just be a map(string) value, so that would be rejected by the type constraint above. Perhaps you instead intended this variable to be map(string), in which case the .tfvars file is correct.
If you can confirm which of these is what you intended and whether you still see the problem with a precise type constraint, I’d be happy to try to help further. It would also be helpful if you can indicate exactly which module you mean when you say “the gke module”, so that I can see which documentation you’re referring to.