Astros catcher Jason Castro needs knee surgery