El incidente ocurrió en el barrio Neve Yaakov de la ciudad alrededor de las 20:15 hora local (18:15 GMT) y la policía lo describió como «un ataque terrorista».
El servicio de ambulancias de Israel informó de 10 víctimas, entre fallecidos y heridos.
La policía dijo que el presunto atacante había sido «neutralizado».
El hombre identificado como un palestino del campo de refugiados de Shu’fat en Jerusalén Este.
«Es uno de los peores ataques que hemos enfrentado en los últimos años», dijo el comisionado de policía israelí, Kobi Shabtai, en la escena del crimen.
La BBC habló con testigos en el lugar, quienes dijeron que escucharon disparos y que la situación era muy aterradora.
Poco después del incidente, el controvertido ministro de Seguridad Nacional de extrema derecha de Israel, Itamar Ben-Gvir, visitó el lugar del tiroteo.
Ben-Gvir prometió devolver la seguridad a las calles de Israel, pero existe una ira creciente porque aún no lo ha hecho, dice la periodista de la BBC en Jerusalén, Yolande Knell.
Estados Unidos condenó el ataque. El portavoz del Departamento de Estado, Vedant Patel, dijo: «Estamos con el pueblo israelí en solidaridad».
Este tiroteo se produjo en medio de una escalada de tensiones después de que 9 palestinos, tanto militantes como civiles, murieran este juevesdurante una incursión militar israelí en un campamento de refugiados Yenín, en la Cisjordania ocupada.
A eso le siguió el disparo de cohetes desde Gaza hacia Israel, a lo que el ejército israelí respondió con ataques aéreos.