Generally, especially for production cluster, we would of course recommend using hardware as similar as possible.
However, it is not a hard requirement. The main disadvantage is that it might limit the capability to live-migrate VMs, depending on what exact CPU models you use. This also depends on the CPU-model that you choose in the VM settings. For instance, if you set it to 'host', then the VM will be able to use all features that the host CPU offers. Now, if a second cluster node uses a different/older CPU, then it could happen that that CPU does not support some of these features. If you then try to migrate the VM, you will run into issues/freezes.
That being said, the default CPU model for new VMs, starting with Proxmox VE 8, is x86-64-v2-AES. That limits the VM to using only features from a certain generation of CPUs (Westmere for Intel or at least a fourth generation Opteron for AMD, ). So as long as all nodes have a CPU of that generation or new, and if you don't change the default in VM settings, live migrations could work. However, to quote our documentation : Live migrations between Intel and AMD host CPUs have no guarantee to work.
Thank you for this interesting explanation ! I want integrate new servers with Intel CPUs Generation Icelake, more Cores and bigger OSDs in a Proxmox Cluster with Intel CPUs Generation Skylake, less Cores and smaller OSDs. Is this ok ?
I think this should be fine, just make sure that you don't configure any CPU features that are not supported by the older CPU model. Also maybe try some live-migrations for testing purposes, to make sure that everything works out okay (and you don't find this out during an emergency where you HAVE to migrate your services to ensure availability).