Hi Peter,
upgrading usually implies that some changes were made: bugs were fixed and features added. This usually also implies that some messages have change in format or meaning (if only from “broken” to “works now”). Operating nodes of different understanding within the same cluster is a very risky proposition as it is very hard to get right—the new nodes must be fully capable of understanding the old ones and they must also not confuse the old ones with new language. Other issues arise when talking to a shared data store: if new nodes write new data, will the old nodes be able to deal with it? Will they silently and unknowingly corrupt new records?
For these reasons the stories from the field I have heard have all pointed towards doing red/blue deployments, starting a new cluster next to the old one and shifting traffic and deployment size between them in order to switch over.
Regards,
Roland