Fifteen people were wounded, the Istanbul governor’s office said.
President Recep Tayyip Erdogan said Turkey was the “top target for all terrorist groups in the region”.
His country, he added, was “fighting against all of them equally”.
Turkish Prime Minister Ahmet Davutoglu has telephoned German Chancellor Angela Merkel to tell her that most of the dead were German, sources in his office said.
Turkey’s Deputy Prime Minister Numan Kurtulmus said the suicide bomber was a Syrian born in 1988 who had been identified from body parts.
Two of the injured were in a serious condition, he added.
Eyewitness Murat Manaz said: “It was a suicide bomb. I went there and saw it and came back to the hotel. There was chaos. Everybody was running somewhere.
“Policemen did not see this coming. They were distressed but at the same time they were trying to evacuate the area because they said there was a possibility that a second bomb could go off.”
The authorities are investigating the type of explosive used, the governor’s office said.
Mrs Merkel had earlier expressed “serious concern” about the casualties, saying a German tourist group had been affected.
She added: “Today Istanbul was hit; Paris has been hit, Tunisia has been hit, Ankara has been hit before. International terrorism is once again showing its cruel and inhuman face today.”
Germany’s foreign ministry has on its website (in German) urged German tourists in Istanbul to avoid large crowds and tourist attractions and warned that further violent clashes and “terrorist attacks” were expected across Turkey.
Norway’s foreign ministry said a Norwegian man was receiving treatment in hospital.