kdb is the predecessor to kdb+®. At one point kdb was an application on top of k. At kdbfaq, we refer to kdb+® as kdb. q is the programming language of kdb. It’s a small layer of syntatic sugar on top of k, plus several significant extensions and new datatypes. k4 is simply an old name for q.
See $QHOME/q.k to see how much of q is written in k.