I see a few common configurations depending on the number of nodes in a cluster:
1 node: 1 server
2 node: 1 server + 1 agent
3 node: 1 server + 2 agents OR 3 servers
4/5 nodes: 3 servers + 1/2 agents
7+ nodes: 3 etcd-only nodes, 2 control plane nodes, 2+ remaining agents (this is a advanced configuration where you need to scale etcd (DB) load separate from K8S control plane traffic/load, and then you run your workloads/containers exclusively on the agent nodes)