Tanking
Tanking is about 2 things, holding aggro and keeping yourself alive. Holding aggro does not mean dealing lots of damage, although it can help, rather using the right abilities. Keeping yourself alive is actually helping priest have a easier life healing you, cause if priests can't keep up you're dead, and if they run out of mana, you're dead.
Holding Aggro
You have to use as many abilities that deal a high amount of threat as rage allows. Most important is initial threat, because once you lose aggro you won't get any rage, and be unable to use revenge.
*I'll just note that threat is the numerical figure that represents how high you are on the aggro list, while aggro means being the target of the mob/boss*
What a good warrior has to do is use his most threatening abilities as much as CD allows, assuming protection warrior, Shield Slam and Revenge have to be used all the time. Also, Devastate deals a high amount of threat, more so on the first times, where it stacks sunder armors. Sunder armor should never be used if you have devastate.
Thunder clap is an average threat generating ability at best, but is good for AoE threat build.
Next ability that cause threat is Heroic Strike, however unlike other abilities, Heroic strike is "on next attack" and therefore should be used as much as rage allows.
Many warriors ( And druids too, for that matter ) tend to tank on full rage. I may be missing out on something, but otherwise it's a waste of threat and dps ( the latter is not very important, but still might make a difference ). When rage is full you do not get any more of it, Every rage point that hasn't been used up is wasted, every rage point can be turned into a useful ability. Now, you may say that you are using all abilities and Global cooldown doesn't let you squeeze in any more, that's true, but here come Heroic strike. Heroic strike for tanks is a rage dump ability, you use it every time your rage is high, a Heroic strike can be used between every ability used, i.e. every 1.5 seconds, most tanking weapons would allow that. This will boost your damage and threat build significantly.
Another point worth mentioning is over-tanking, what I mean by that is a situation where your gear is so good that your tanking is too good. This may sound ridiculous, and it's not very relevant for Karazhan but still worth mentioning. The problem is when your avoidance is so high and damage taken is so low that your rage generation isn't enough for you to hold aggro. In this rare case I suggest stop using Shield Block, Demo Shout and Thunder Clap, and naturally Heroic strike ( which is rage-dump ). Without these three abilities you'll get more damage and rage. In the even rarer case this isn't enough, the instance must be too easy, and DPS can probably handle some aggro.
Staying Alive
On the other hand, you have to stay alive, or else all aggro goes to waste ( Mobs don't attack dead characters ), this is done using a few defensive abilities. First one is Demoralizing shout, which lowers AP of the target, not effective against caster, but as most caster do hit from time to time ( and rather hard for casters if you ask me ) it's still worth casting. Second is Thunder clap, which in my opinion is the best melee debuff in the game.
Those two have to be active on a mob at all times, but you have to build threat, right? and initial threat is the most important. So, better use those if you expect a pretty long fight, and only after a good threat build ( e.g. Shield slam and 2 devastates )
Last ability that require special attention is Shield Block, this ability has 2 uses. First gives you practically 100% chance to block, which is a good way to activate revenge ( the damage reduced in negligible in raids and I'm not even going to take that into account ) but that's not very important, most tanks have revenge activated constantly. The other use is to prevent crushing blows. Bosses are ?? and therefore crush tanks, this means 150% dmg, which can sometimes kill the tank before healers finish their castings. A hit can't be both crushing and blocked at the same time, therefore shield block is used to push crushing blows out of the % table. A tank fighting a boss should ALWAYS have shield block up. On the other hand, shield block wastes a lot of rage, so isn't always good for trash mobs.
One exception is Fast hitting bosses, like Romulo, which hits so fast that shield block fades before CD is over and you get crushed repeatedly, in this case - Healers: deal with it! ^^
Last abilities I want to discuss are not very important and i'll go through them briefly.
Commanding shout: adds roughly 1K health to all party members, use if you have low health pool or if boss deals a lot of colateral dmg and party needs more health
Last stand: Pop up if nearly dead, 3K+ might permit those last 2 seconds casting time of the healers
Shield bash: Inerrupt casting and dazes, can be used either to stop casting, better not be used on random casting if particular mob can later heal, and can also be used to benefit from improved damage of Heroic strike on dazed tartgets
Intervene: Has 2 major uses, prevents one hit on friendly target, but more important, gets you to him fast to allow Taunt, especially useful to reach ranged target ( Hunters/Mages ) before mob reaches them and taunt even before mob gets to attack it
Disarm: In general good to lower damage taken from weapon wielding targets ( including Attumen and Romulo )
Taunt: Use before rather than after, when in doubt - Use!
Shield reflect: Returns spell on caster, I recently found out most Karazhan mobs are immune to that for some reason, nonetheless, Shield reflect have 2 major benefits over Shied bash, the obvious one is that they deal more damage, and the not so obvious one is caster still wastes time casting and doing nothing more harmful in the while
Concussion blow: Stuns, most mobs are stunable, Bosses never are, good for interrupting spells and lower damage taken altogether. Also good to use on running mobs, passing by you on their way to the healers ( Requires macro "mouseover" )