To complement Bob's answer (+1), evaluate OddQ[a] on its own and see that indeed there are no solutions to the system {Mod[a^k - 1, 2^k + 1] == 0, OddQ[a]}, which first evaluates to {Mod[a^k - 1, 2^k + 1] == 0, False}. There's no way to satisfy the second condition. The tricky thing in Mathematica is that the boolean functions ending in Q immediately evaluate to True or False whether the input is symbolic or numeric. OddQ[a] answers the question, "Is a an odd Integer right now?" If a is just a symbol, then the answer is no.
Furthermore, PowerMod[] and bounding the domain make things faster. If the solutions are very sparse, then bounding the domain probably won't help. If the solutions are not sparse at all, then brute force may be fastest.
FindInstance[{Mod[a^k - 1, 2^k + 1] == 0, Mod[a, 2] == 1,
1 < a < 1000, 1 < k < 30}, {a, k}, Integers, 3] // AbsoluteTiming
(*
{0.314344, {{a -> 779, k -> 2}, {a -> 757, k -> 5}, {a -> 901, k -> 10}}}
*)
FindInstance[{PowerMod[a, k, 2^k + 1] == 1, Mod[a, 2] == 1,
1 < a < 1000, 1 < k < 30}, {a, k}, Integers, 3] // AbsoluteTiming
(*
{0.11144, {{a -> 779, k -> 2}, {a -> 757, k -> 5}, {a -> 901, k -> 10}}}
*)
(sols = Replace[
Position[PowerMod[Range[1, 1000, 2], #, 2^# + 1] & /@ Range@30,
1, {2}], {kk_Integer, aa_Integer} :> {a -> 2 aa - 1, k -> kk},
1]) // Length // AbsoluteTiming
And @@ (Mod[a^k - 1, 2^k + 1] == 0 && Mod[a, 2] == 1 /. sols)
(*
{0.004864, 1048} <-- over 1K solutions found
True <-- all true
*)
The unbounded problem is more difficult:
FindInstance[{Mod[a^k - 1, 2^k + 1] == 0, Mod[a, 2] == 1, 1 < a,
1 < k}, {a, k}, Integers, 3] // AbsoluteTiming
FindInstance::nsmet: The methods available to FindInstance are insufficient to find the requested instances or prove they do not exist.
(* {1.76712, FindInstance[…]} *)
ForAll[k, k>=0&&k ∈ Integers]etc.. $\endgroup$