Windowing is the first line of defense. you may need the windowing to be complementary, which is that all window functions (at their various frame delays) add to 1. the Hann window is an example. the Hamming window (which might have better sidelobe behavior than the Hann) is sorta complementary, but it adds to 1.08 (just a simple scaling issue).
if your window use is only for analysis (and not for synthesis) you might not need it to be complementary, so you could use a Kaiser window or a Gaussian window, both which have some useful mathematical properties in analysis.
the second line of defense is to use your 2048-sample as just buffers and space your frames (and the analysis windows that come with), by the detected period and adaptively advance the frame locations by a period each frame process. that's a little weirder because you need to have, a priori, some knowledge of the period which what your pitch synchronicity is all about.
the most weirdest line of defense, is to advance each frame by a well-chosen "random" value between $L$ and $2L$ (where $2L$ is longer than the longest anticipated period) to scramble up whatever effect of the boundary discontinuity.
as we might say on comp.dsp, "you'll have to pay for more information".