The attacker was on a Jewish work and study program and was employed at the hotel until earlier this week.
Eilat police official Eitan Gedassis told Israel Radio the attacker snatched a gun from a hotel security guard and fired a number of shots at the Leonardo Club hotel in the Red Sea resort city, killing the chef.
Police and army anti-terror units stormed the hotel, and the gunman fired back from the hotel kitchen, Gedassis said. Forces from the army's anti-terror unit returned fire, killing the attacker, said a spokeswoman for the Israeli military.
The gunman was a 23-year-old Jewish man from New York. He was participating in a program that brings Jews to Israel for work and studies, said Ofer Gutman, head of the Oranim program, which is sponsored partially by the Israeli government.
"He was a normal guy," Gutman told The Associated Press. "There was nothing that indicated what would happen in the end." Gutman declined to give the attacker's name.
Gutman spoke by telephone before boarding a flight to Eilat, where he hoped to calm the gunman's fellow program participants. "It's terrible what happened," he said.
The man arrived in Israel about two months ago on the Oranim program, combining Hebrew study, travel and work in an Eilat hotel along with a university course on hotel management, Gutman said. On Tuesday, the hotel and the program decided, together with the man, to terminate his work at the hotel, and the Oranim staff was planning to reassign him to another workplace, Gutman said.
Gutman did not say why it was decided to end his work at the hotel, but said participants sometimes transfer to other workplaces based on their personal preferences.
Israeli media reported that the man the gunman killed was a hotel employee who had argued with him. Police could not immediately verify that account. Zaki Heller, a spokesman for Israel's rescue service, told Israel's Channel 2 TV the victim was a man in his 50s. Police said he was a hotel chef. His name was not released.
Israel Radio reported that the gunman ran into the lobby and fired a shot in the air, then ran through the dining room as hotel guests dived under tables.
Michal Bouaron, a guest at the hotel, told Channel 2 that police ordered guests to stay in their rooms during the incident. Later, police announced that it was safe for guests to leave their rooms.
"Everyone left here happy, clapping," Bouaron said. "There was a lot of tension."
She added, "Life goes on ... We won't let this ruin our day and our vacation."
The hotel is filled to capacity, Israeli media reported, because of the Jewish holiday of Sukkot, when many Israelis take vacations. Eilat, with attractive Red Sea beaches and hot, dry weather, is a favorite getaway spot for Israelis.