Finite State Machines
If you just needed this done, use a microcontroller.

If the purpose is to make this discrete logic as a learning exercise, then I can think of several ways:

Use a 3 bit binary counter and increment it 3 times each count.

Use a 3 bit binary counter and increment the second bit (count up by two) once and the first bit (count up by one) once per count.

Use a 8-cell ROM such that the address is the existing counter value and the contents is the next counter value.

Since you only have 8 possible states, such a ROM could be implemented by a 3-8 line decoder and a 8-3 line encoder and a flipflop to hold the output.  The in to out mapping is done by selecting which decoder outputs drive which encoder inputs.

You could also make the ROM with a diode array.  There are lots of possibilities.