Kube is too complex. To derive any kind of business value from it you need highly skilled people. The winner of the container orchestration battle will be the one that simplifies, not complicates.
To me this is just another hype train, like TensorFlow/Caffe before it, and like Hadoop/Spark before that.
These tools all have their uses in specific, non-common cases, but for your average business they are a net loss in time and money.
Too complex compared to what? All other commonly used web infrastructure is complex in various ways.
In my experience building and running Kubernetes clusters for Fortune 500 companies is that actually it's much simpler, it's just different from traditional infrastructure.
I guess we worked at different Fortune 500 companies. What I see are companies adding complexity to their web infrastructure where none needs to exist.
A vanishingly small number of use cases require 100's of nodes, and the accompanying orchestration. Stack Overflow runs a top 25 website on 9 webservers, and most of those are just redundancy. Nothing Ansible/Bash or Powershell/MSDeploy can't solve in orders of magnitude less time. And debugging/diagnosing problems is much easier.
Were the Fortune 500 companies hosting k8s on-prem or on a cloud provider? From an operational standpoint, I can see where GP is coming from, especially if you are hosting on-prem, for non-greenfield projects.
Trying to integrate a k8s cluster into legacy infrastructure is non-trivial, and requires knowledgeable operations teams to deploy. Troubleshooting k8s requires extensive domain knowledge, in addition to foundational understanding of fairly advanced networking and distributed systems concepts. In my experience, working with k8s also requires much more vigilant watching of the project space for (breaking) changes, updated docs, SIG news, and github issues. Even if Google or Amazon is managing the k8s management, troubleshooting your app using kubectl, etc. is a new skill to learn.
I actually like a lot about using k8s, but I understand when people complain about the complexity.
Singley rooted Debs or RPMS with a nice single symlink init system and a log shipping system that is unified across the app stack will get you 90% of the way there. Add in a build system that ships "the world" inside your deb and you are 99% of the way there. Add in a cluster wide config system and you are 100% of the way there.
K8S forces people to use an algebra, the expression of that algebra can take many forms. Containers are _just_ trees of processes with ... contained separation boundaries.
I wonder if the "It's simple, just use kops!" etc, have tried to deploy kubernetes to anything other than a cloud service provider. Setting up a production grade Kubernetes cluster integrated on-prem with in-house development and operations teams is no small feat for anything other than a toy deployment. Kubernetes has benefits for some use cases, but I think some of the HN crowd underestimate the rather large investment of time and energy it can take to get there.
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.
To me this is just another hype train, like TensorFlow/Caffe before it, and like Hadoop/Spark before that.
These tools all have their uses in specific, non-common cases, but for your average business they are a net loss in time and money.