One sprite node for the naked character, another for each part of armor (helmet, chest, pants, for instance). If every armor sprite is equally positioned in its image, you can then load different files as needed - on an equipment change, call a load("res://armor2.png") for the Texture of the armor node. You'll also need to keep the file path string saved somewhere, likely within the rest of the armor's attributes
While it may not be an immediate problem for you, keep in mind that each .png image the game keeps loaded will use some VRAM, according to its total size. For instance, each 1000x1000 png image will take ~4MB of VRAM. I recommend cropping as much unused vertical and horizontal space as feasible.