The Bible gives us only one reason why God was angry with Moses. Only one:
And the LORD spake unto Moses, saying,
Take the rod, and gather thou the assembly together, thou, and Aaron thy brother, and speak ye unto the rock before their eyes; and it shall give forth his water, and thou shalt bring forth to them water out of the rock: so thou shalt give the congregation and their beasts drink.
And Moses took the rod from before the LORD, as he commanded him.
And Moses and Aaron gathered the congregation together before the rock, and he said unto them, Hear now, ye rebels; must we fetch you water out of this rock?
And Moses lifted up his hand, and with his rod he smote the rock twice: and the water came out abundantly, and the congregation drank, and their beasts also
Numbers 20:7-11
God was angry with Moses because Moses did not follow His commandment. Moses was supposed to speak to the rock, not hit it.
If it was any other rock, it would be illogical for the Almighty Father to be angry with him. Alas, the rock was a very, very, very special rock...
Moreover, brethren, I would not that ye should be ignorant, how that all our fathers were under the cloud, and all passed through the sea;
And were all baptized unto Moses in the cloud and in the sea;
And did all eat the same spiritual meat;
And did all drink the same spiritual drink: for they drank of that spiritual Rock that followed them: and that Rock was Christ.
1 Cor 10:1-4