A kernel module is a collection of code that can be loaded into the kernel at runtime, without recompiling the kernel. Each one typically provides one "feature", such as a single device driver, file system, or communication protocol. Additionally, some modules provide library functions to aid in implementing other modules.
This tag covers questions about loading, configuring, and compiling kernel modules. Questions about which module to use for a particular piece of hardware should instead be tagged drivers.
A module typically conforms to one or more well-defined interfaces -- usually one from the user-side of the module (e.g., the Unix read/write/ioctl interface) and one or more from the upstream-side of the module (e.g., the USB I/O subsystem interface).