The word खाना is both a noun which means 'food' and a verb which means 'to eat'.
Think of it as being similar to the English sentence 'The cook cooks food'.
Why not “I eat food” or “I have food to eat”? How does मुझे signal “I have to eat food”?
It's the 'खाना है' that indicates 'have to eat'. The 'verb infinitive + है ' construction is colloquially used to mean either 'have to' or 'want to' depending on the context. [If you want to convey a stronger sentiment or be formal, it is better to use चाहिए/चाहना instead.] Just like चाहिए, it is to be conjugated with the dative form of the noun- मुझे, तुम्हे, उसको, हमें etc
Eg: मुझे अब जाना है। - I have to go now.
उसे पिज़्ज़ा खाना है। - She wants to eat pizza.
हमें पढ़ना है। - We have to study
'I eat food' will be 'मैं खाना खाता हूँ' 'I have food to eat' will be 'मेरे पास खाने के लिए खाना है'
I have to go means mujhe ab jana he hai
I will have to go now mujhe ab jana he hoga
there is only 1% probability that it is true if you are personally saying these words in an already on going conversation... with audio expression and tone and timber and pitch etc this is something I think is mass murder of the language...