"I don't know what he was thinking or what his motives were," Sheriff Ron McClellan said.
Campbell County High School Assistant Principal Ken Bruce was shot in the chest just after 2 p.m. and died soon after at a hospital, law enforcement and school officials said.
The suspect was grazed in the hand by a bullet fired from his own .22-caliber handgun during a scuffle with the administrators and an unidentified teacher who helped wrestle the gun away, the sheriff said.
No other students were injured.
Principal Gary Seale was shot in the lower abdomen, and Assistant Principal Jim Pierce was shot in the chest. Seale was in serious condition and Pierce in critical condition at University of Tennessee Medical Center in Knoxville, spokeswoman Lisa McNeal said.
School will be closed the rest of the week, and counselors will be available to help students and teachers on Monday, schools director Judy Blevins said.
The school was locked down after the shooting, and students were evacuated and loaded onto buses, reports CBS Radio News. "They are searching each student as they are getting on the buses," said Roger Wallace, a driver at a pizza restaurant nearby.
"This situation could have gotten much worse. It did not because our staff followed the (emergency) plan in place," said Mark Wells, vice chairman of the Campbell County Board of Education.
Authorities were unsure if the suspect would be charged as a juvenile or an adult. He was being held in a juvenile detention facility in nearby Scott County.
The 1,400-student school, located about 30 miles northwest of Knoxville, was locked down after the shooting. Students said Seale was able to get to the school intercom and order the lockdown after being shot.
"Knowing him, he probably did," the sheriff said. "He is a tough fellow and a great individual. That sounds like him. Whoever did it, he did the right thing."