A police source said the alleged perpetrator was an Afghan asylum-seeker, unknown previously to both the police and the intelligence services.
An eye-witness in Villeurbanne, a suburb of Lyon, described the attack as frenzied.
“There was a man at the 57 (bus stop) who started striking out with a knife in all directions,” said a young girl whose top was stained with blood.
“He managed to hit, to cut open one person's stomach,” she said. “He stabbed a guy in the head, he cut the ear of a lady and the lady was dying at the bus stop and no-one came to help,” she added, sobbing.
She eventually managed to get the woman on a bus, which closed its doors and drove away from the scene.
“There was blood everywhere,” she added.
Of the eight people wounded in the attack, three were in a critical condition, said the prosecutor's office. Paramedics treated another 20 people at the scene for shock.
The mayor of Lyon Gerard Collomb, a former interior minister, visited the site of the attack but in comments to journalists would not be drawn on what had provoked it. The man who carried out the attack had acted quite suddenly, he said.
The mayor of Villeurbanne, Jean-Paul Bret, paid tribute to people at the scene and security staff at the nearby metro station who overpowered the suspect as he tried to make his escape.
Police arrested the suspected attacker and were holding him in custody on suspicion of murder and attempted murder, the Lyon prosecutor's office told AFP.
The reasons for the attack were still not clear. The national anti-terrorism prosecutor's office had been informed but had not taken charge of the case at this stage.
Reacting to the attack, Marine Le Pen, leader of the far-right National Rally, posted a tweet saying “the naivety and laxity of our migration policy seriously threatens the safety of the French people”.
A group representing the region's mosques also issued a statement roundly condemning the killing and the “deadly madness that inhabits those who try to sow hatred and violence”.
Last May, a parcel bomb in front of a baker's shop in central Lyon slightly injured 14 people.
The perpetrator, a young radicalised Algerian, who was arrested three days later, pledged allegiance to the Islamic State group, according to his confession.
Lyon, France's third city, had until then remained untouched by the wave of jihadist attacks that have killed 251 people in France since 2015.