KANSAS CITY, Mo. – Four days after 49ers defensive coordinator Robert Saleh said Reuben Foster needed “reps, over and over, and over again,” the rookie inside linebacker got them Friday night.
Foster, the No. 31 overall pick, was one of four defensive starters who played the entire first half of the preseason opener Friday night in Kansas City.
Foster, who was joined by defensive tackle Tank Carradine, cornerback Keith Reaser and undrafted rookie safety Lorenzo Jerome, had a relatively quiet NFL debut.
He began by breaking up a would-be touchdown pass intended for tight end Demetrius Harris on the game’s opening drive and finished with two tackles.
Meanwhile, defensive tackle Solomon Thomas, the No. 3 overall pick, made an immediate impact: On his first snap, midway through the first quarter, Thomas pressured quarterback Tyler Bray, who floated an interception to cornerback Rashard Robinson.
In an interesting development with a less-heralded rookie, Matt Breida, who was undrafted, was the first running back off the bench instead of fourth-round pick Joe Williams.
Breida has looked more impressive than Williams in training camp, but the roles were reversed in the first half: Williams had 34 yards on three carries, while Breida had 17 yards on eight attempts.
Injury report: Defensive tackle DeForest Buckner exited on the game’s first drive with an ankle injury and the team quickly announced he wouldn’t return to the game.
However, Bucker, who was sidelined by an ankle injury in training camp, did not appear to be seriously hurt. He stood on the sideline after leaving, later joked with his teammates on the bench and jogged slowly off the field at halftime.
Cornerback Dontae Johnson (concussion), running back Tim Hightower (knee), safety Jaquiski Tartt, rookie tight end George Kittle (hamstring), guard Joshua Garnett (knee), safety Jimmie Ward (hamstring) and linebackers Donavin Newsom (concussion) and Brock Coyle (rib) did not play.
Newsom, an undrafted rookie who left the practice field in an ambulance Tuesday, was released from Stanford Hospital on Thursday after spending two days under observation.
Brock claims innocence: Two days after domestic violence charges against him were dropped, former 49ers cornerback Tramaine Brock issued a statement saying he “never put my hands of the mother of my children.”
Brock, 28, had been charged in June after police alleged he assaulted his 31-year-old girlfriend following a dispute over what to watch on television. The woman had “visible injuries” when officers arrived at Brock’s home in April, according to a police statement. Prosecutors declined to move forward with the case because the victim did not want to cooperate.
Head coach Kyle Shanahan said the 49ers are not interested in re-signing Brock.
Captains: Left tackle Joe Staley, inside linebacker NaVorro Bowman and wide receiver Aaron Burbridge (special teams) were named team captains for the game.
The designation is a good sign for Burbridge, the team’s top gunner who is battling for a spot on the 53-man roster. Burbridge, a 2016 sixth-round pick, had seven catches for 88 yards as a rookie.
Burbridge (hamstring) was declared out of the game at halftime.
Missing Zeke: Cowboys running back Ezekiel Elliott won’t play against the 49ers in the regular season if his six-game suspension for violating the NFL’s personal-conduct policy is upheld. Dallas’ sixth game is against the 49ers at Levi’s Stadium, where Elliott had 138 rushing yards and a touchdown last year.
Eric Branch is a San Francisco Chronicle staff writer. Email: EBranch@sfchronicle.com Twitter: @Eric_Branch