We study an optimal admission of arriving customers to a Markovian finite-capacity queue, e.g. an M/M/c/N queue, with several customer types. The system managers are paid for serving customers and penalized for rejecting them. The rewards and penalties depend on customer type. The goal is to maximize the average rewards per unit time subject to the constraint on the average penalties per unit time. We provide a solution to this problem based on Lagrangian optimization. For a feasible problem, we show the existence of a randomized trunk reservation optimal policy with the acceptance thresholds for different customer types ordered according to a linear combination of the service rewards and rejection costs. In addition, we prove that any 1-randomized stationary optimal policy has this structure. In particular, we establish the structure of an optimal policy that maximizes the average rewards per unit time subject to the constraint on the blocking probability of either one of the customer types or a group of customer types pooled together.