01 - In a large mixing bowl, thoroughly whisk together the all-purpose flour, granulated sugar, baking powder, baking soda, salt, ground cinnamon, ground ginger, ground cardamom, ground cloves, and ground nutmeg until evenly distributed.
02 - In a separate mixing bowl, vigorously whisk together the whole milk, large eggs, melted and cooled unsalted butter, and vanilla extract until fully emulsified.
03 - Gently pour the wet ingredients into the bowl containing the dry ingredients. Mix with a spatula or spoon until just combined, ensuring not to overdevelop the gluten. The batter should be slightly lumpy.
04 - Pour approximately 2 inches (5 cm) of vegetable oil into a heavy-bottomed pot. Heat the oil over medium-high heat until it reaches a stable temperature of 350°F (175°C).
05 - Using a small cookie scoop or measuring tablespoon, carefully drop small portions of the batter into the heated oil. Fry in small batches to prevent overcrowding the pot, which can lower the oil temperature and lead to uneven cooking.
06 - Fry the donut holes for 2 to 3 minutes per batch, turning them occasionally with a slotted spoon, until they achieve a uniform golden-brown hue and appear cooked through.
07 - Remove the cooked donut holes from the hot oil using a slotted spoon and immediately place them on a plate lined with paper towels to absorb any excess oil.
08 - In a clean bowl, whisk together the sifted powdered sugar, whole milk, and vanilla extract. Continue whisking until the glaze is smooth and free of lumps.
09 - While the donut holes are still slightly warm, carefully dip each one into the prepared vanilla glaze. Allow any excess glaze to drip back into the bowl. Transfer the glazed donut holes to a wire rack to allow the glaze to set.