The 34-year-old would have been an unrestricted free agent on July 1. He'll earn $2.8 million a season, a raise over the $1.52 million he's making this year.
"We are very happy," Knuble said in a statement. "My wife and I love the area. The people that we deal with in the organization have been great. I love my teammates and I've had a blast playing here. Even with what has gone on this season, my family and I decided that we wanted to stay here.
"(GM) Paul (Holmgren) approached us about giving us a chance to stay for another two years after this year. It's great and everything that I could have hoped for."
Knuble has seven goals and eight assists in 18 games this season. He had 34 goals and 31 assists in 82 games last season.
"We are happy with Mike's play since he joined us," said Holmgren. "We think that he's got more to give to us in the future. He is not only a good player, he's a good person and a guy that we want in our organization moving forward."
Knuble has 142 goals and 146 assists in 610 career games in a 10-year career that also had stops in Detroit, Boston and the New York Rangers.
"I feel that I have a lot of hockey left," said Knuble. "I really didn't start playing a lot until I was 30, so I feel that I have a lot of years left in me.
"Hopefully, I will stay even longer than that."