Push through the bucking and make your horse move. He might have learned that when he bucks, he gets to stop working. I had a gelding that was like that. Just make him run and he'll realize it's more work to buck than canted normally :)
I had this exact problem. I had the vet come down and she was perfectly fine. Lunging never worked, bringing her back down and making her do tight circles a lot never worked. I had a coach help me, and what we did is I would "ignore the buck" and keep asking for the canter. If i couldn't get it, I would make her trot as fast as i possibly could, sometimes she would get mad and I would have to have a crop in hand and I would smack her on the shoulder (smacking her on the hindquarters made her mad) and it worked. Then I would ask for the canter again. If she bucked I would wack her on the shoulder. Just whatever you do, make them keep working.
It could be many things. It could be the tack that doesn't fit properly and pinches him, it could be good energy he lets out or it could be because he is difficult to get to canter and responds negatively.
One thing for sure. Do not get angry with him. Whatever the reason is, he has a reason.
I agree with Jessica, also when he bucks immediately slow him to a walk or trot while doing very tight circles and ask him to canter again so he knows he won't get away with doing that. Also don't pull on the reins, your horse is stronger than you and it will just create a bad memory for the horse, if anything pull your reins up a bit and kick with both feet, not extremely hard but just enough to let him know that again, he should not be doing that.
If it isn't a tack problem or a sore back lunging them helps a lot, I had a horse that did this a lot and lunging them at a walk trot canter for about 10-15 minutes before a ride helped tonnes!
Get your tack and horses back looked at