I run into this every so often and I diagnose it by trying to manually reroute a shard using the cluster reroute API and the explain parameter set. Way at the bottom of the response JSON, you might see the reason.
Just recalled that I'm using hot/warm architecture and those nodes are marked as "warm". As soon as I changed them to "hot" shards are now being allocated there
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.