You need to ask yourself two questions:
1 - When do I need this up and running?
2 - How long do I want this stack to survive?<p>Question 1
Based on your skills and how fast you can learn something new, how fast you need something is crucial to select the appropriate tools to complete the tasks and you'll need that running on production (you can forget about Kubernetes now).<p>Based on that, you'll need to benchmark the tools you already know or the ones you want to learn based on the attributes your project will need more. Try to build a small prototype of one of the core features of your product and decide then, if you think the stack you selected is not playing along, change it and iterate on it.<p>Question 2
Everybody thinks they are building something to last, but that's the most stupid thing to do. Once you write the first line of code, you already set up an expiration date for that piece of software. Tools and software changes all the time and the tools you've today, they might not have support tomorrow or some technologies may come up that will solve the problem for you and you can discard a big part of your stack.<p>3 years is a good time for any stack to run, evolve and die. It's a good timespan to understand what you need more, build new prototypes with new technology and try new tools. So when it comes the time you've to re-build your stack, you already have something in mind.
Typically what worked well and not so well on the last one, what parts I want to reuse or replace, and what new options are available for me to try for the first time.