Kubernetes and Nomad are resource schedulers. Resource scheduling is a hard problem. For example, Linux is also a resource scheduler.<p>Right now, we're seeing something similar to the OS wars in the 80's, 90's and 2000's. Back then there was Solaris, Linux, Unix, BSD, etc. In the 2000's, Linux won. After that, the sheer force of community made it easy to deploy and use.<p>The community around Linux mitigated its complexity by making distributions -- opinionated choices around how to set up linux, including what package manager to use, what init process to use, etc.<p>Kubernetes is, in my opinion, far more complicated than Nomad, but it's also more feature rich. To mitigate that complexity, quasi-distributions of kubernetes are emerging, like kops ( <a href="https://github.com/kubernetes/kops" rel="nofollow">https://github.com/kubernetes/kops</a> ) and kubespray ( <a href="https://github.com/kubernetes-incubator/kubespray" rel="nofollow">https://github.com/kubernetes-incubator/kubespray</a> ). My personal favorite is Typhoon ( <a href="https://typhoon.psdn.io/" rel="nofollow">https://typhoon.psdn.io/</a> ), because it uses a "package manager" (software delivery mechanism) that allows you to declare dependencies between packages and also allows you to deploy the entire cluster from the ground up -- Hashicorp's Terraform ( <a href="https://www.terraform.io/" rel="nofollow">https://www.terraform.io/</a> ).<p>The kubernetes package manager is helm ( <a href="https://helm.sh/" rel="nofollow">https://helm.sh/</a> ), but if I were you I'd wrap helm charts in terraform modules using the helm provider ( <a href="https://github.com/mcuadros/terraform-provider-helm" rel="nofollow">https://github.com/mcuadros/terraform-provider-helm</a> ).<p>By contrast, Nomad is much simpler to set up and has a much better modular design. But then, so did the OS GNU Hurd. And no one uses that anymore. Kubernetes is much more monolithic in design (huh, so is Linux).<p>Therefore, I would choose kubernetes, but treat it like an OS. It's complicated. Don't choose what ingress you will use. Instead choose what <i>distribution</i> you will use, and let the distribution guide your decisions, unless you have a good reason.<p>Realize that you're learning an OS (resource scheduler = os in my head). Kubernetes has more complexity than Nomad up front, but at least it's not accidental complexity. K8s calls the resource scheduler problem what it is -- hard, and treats it appropriately.<p>The other safe bet is Terraform as the package manager. Choose a kubernetes distro that uses it (Typhoon, Kops). It is getting <i>huge</i>.<p>Kubernetes' extensible API is what really makes it cool. Having a prometheus operator ( <a href="https://github.com/coreos/prometheus-operator" rel="nofollow">https://github.com/coreos/prometheus-operator</a> ) automatically monitor your services for you is pretty nice.<p>Finally, don't expect the stability you see in the Linux OS. Kubernetes is still coming out of the primordial ooze, though it's way more mature than Nomad in its community. Still, when a google search for how to do something on a cluster mostly turns up github issues, you know we're still in the early stages.<p>That said, Nomad is way easier to set up, and supports things like raw execution, JVM direct execution, and chrooted exec, so if you can't use containers at least you can still use a cluster. You'll be rigging everything yourself, but raw execution actually gives you a lot of rope ( <a href="https://github.com/hashicorp/nomad/issues/150" rel="nofollow">https://github.com/hashicorp/nomad/issues/150</a> ). So if you need to do something really custom, Nomad might not be so bad. Kind of like embedded Linux.