k8s is not complex. You basically can spin up a cluster in no time on CoreOS via pxe/ipxe. You do not even need all these fancy stuff around k8s. You only need to ssh into your machine to start bootkube (on a single machine) or later to update the kubelet (can be done with ansible). Everything else can be managed via kubectl.
This thread is extremely refreshing. The number of times I've heard "Kubernetes is sooo simple!!!" here and elsewhere is super frustrating.
"You just take your app and put it in a container, then put that container in a pod, which is in a replica set with some other apps in their own containers, which is on a node in a cluster in a datacenter somewhere! Oh and the replica set is amongst a deployment. And if you want to talk to the outside world you'll need a sidecar with ngnix which is an app in a container in your pod. Or your deployment. But it's different than your app. Time to get kubectl and minikube installed..." People act like all these concepts are taught in beginner CS classes.
Yeah, and trying to explain all these concepts to devs, qa folks, data scientists, etc. when you tell them they have to start working in a Kubernetes environment, then actually working with them to make changes to their apps to make that happen is a long journey - unless you happen to have a first class team on hand that really knows the ins and outs of how the entire ecosystem works.
Kubernetes has some great attributes, but being simple isn't one. I feel sometimes that Google really pulled one on us, and this is just training people to treat the entire system as a black box, locking them in to services only top tier cloud companies have the expertise to provide and maintain reliably.
Only a few people need to know all the details. We have many developers that know absolutely nothing how this stuff works. They only know that they push code, and a container falls off the other side, which can even be installed automatically.
Also, you don't need sidecars. Add a k8s ingress, or even deploy a separate nginx that will do this for you (we use the second option). Developers do not care.
I'm starting to think that minikube is an anti-pattern.
Companies often think that with k8s they can put the onus of devops on the app developers themselves. My company quickly found that that it's not nearly that simple and you still need a team of engineers dedicated to helping people get set up, debug issues that arise, and build tools for both.
If you are deploying anything that's not a static website, you are going to have to learn a lot more concepts than these.
You do not have to use CoreOS, you do not need PXE boot. That's one of the possible ways.
What you do need is a handful of containers, and an overlay network. Which, if you do not want to manage, you can sign up for something like Google Cloud and let them manage it for you.
Debian, PXE/CDs/USB sticks/whatever install medium you wanna use, ansible, systemd, ssh. And you say it's not complex? I don't think you and I will ever agree on the meaning of that word.
Currently running a application on anything is always complex in any kind of sense.