TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Is Kubernetes too complex for most use cases?

17 pointsby ojhughesabout 7 years ago
I understand why people choose K8S as a platform but is the trade off worth it considering how much complexity it introduces? There so many moving parts that could cause things to go wrong and be very difficult to troubleshoot.<p>At this stage I am still leaning towards plain old VMs in the cloud + something like Consul for service discovery. Maybe I am being overly cautious or missing a fundamental piece of the picture?

9 comments

ceticoabout 7 years ago
It depends on how you define &quot;most use cases&quot;.<p>If you need containers to solve the &quot;it works on my workstation&quot; problem, and you need to make your containers run in production and scale them easily, and you have lots of applications to setup and deploy, then Kubernetes is fantastic. But if you can get away with just running your application in plain VMs and the burden of maintaining a Consul-based app discovery isn&#x27;t a problem for you, your proposed setup makes a lot of sense.<p>Custom infra has an operational cost that is proportional to the number of applications. Kubernetes has a high fixed operational cost that you always incur, whether you have 1 application or 20. Once your operational complexity is high enough, it makes sense to use Kubernetes.<p>Soon higher level solutions will come along that will delivery the same advantages of Kubernetes but remove the learning curve and ops cost of Kubernetes.
评论 #16853430 未加载
ecesenaabout 7 years ago
I think if you ask, it probably is too complex in your situation.<p>One thing I think it&#x27;s valuable to keep in mind is that if you&#x27;ll have success, you&#x27;ll go through multiple tech eras, and you&#x27;ll have to change (pick you favorite) language|service|cloud|etc.<p>If you choose not to use k8s today, and in 2 years it will have the features you&#x27;ll need with the right amount of complexity for you, then that will be the right time for you to introduce k8s. If you do choose k8s today, in 2 years you&#x27;ll have to do a change anyway, either in this or another domain.
medyadailyabout 7 years ago
I actually talked about this in Linux Foundation conf there I mentioned if you follow 12 factor app design, kuberentes makes perfect sense, if not, VMs might be actually better choice for you. (watch the talk here youtube.com&#x2F;watch?v=FcNILuwmipA )
segmondyabout 7 years ago
Depends, if you are just going to do simple deploys then its&#x27; not worth it. If you are going to make good use of it, then sure. Besides deployment, the labeling feature, namespaces, bin packing of pods, container resource constraints, declarative nature which gives you resilience and scaling. If you use all that it&#x27;s worth it. If you don&#x27;t have a scaling problem and don&#x27;t deploy often. Then probably not.
LinuxBenderabout 7 years ago
I would be interested to learn from companies that have been using K8&#x27;s in their production datacenters and running critical complex applications, how much ramp up time their operations teams needed to learn how to troubleshoot system and network anomalies that don&#x27;t tend to surface themselves in the typical system logs.
xstartupabout 7 years ago
My deploy times came down since I started using K8. Deploy just takes 20 seconds for me now. I&#x27;ve not measured the performance lost. Reliability&#x2F;speed of rolling features has improved a lot.
aprdmabout 7 years ago
Worked with plain old VMs + systemd + Consul + Ansible in a four datacenter setup with 200+ VMs 30+ services with no issues.
hotdoxabout 7 years ago
&quot;Is too complex?&quot; it is not right type of question. &quot;How many people should work exclusively on K8S?&quot; is right type of question.
评论 #16856390 未加载
atombenderabout 7 years ago
I would argue that (1) Kubernetes isn&#x27;t that complicated, and (2) you&#x27;re paying a one-time cost in complication that, when managed correctly, gives you an operationally much simpler substrate to run apps.<p>To explain, consider the situation with bare VM, managed with something like Puppet&#x2F;Ansible&#x2F;Salt&#x2F;Chef, with SSH access, iptables, Nginx, etc. -- a classic stack where you address individual nodes, which you may add&#x2F;remove somewhat dynamically, but where node identity does matter a bit because you have to think about it. You need monitoring, you need logging, you need some deployment system to clone apps onto the nodes and restart them, and so on. Whatever you choose, it&#x27;s going to be something of a mish-mash of solutions. Most of your config goes into the configuration management engine (Puppet or whatever), which has a data model that maps a static configuration to a dynamic environment -- a model that, having used it for 10+ years, is inarguably rather awkward. You have to jump through all sorts of ugly hoops to make a Unix system truly declarative and reactive. It wasn&#x27;t made for it. Unix isn&#x27;t stateless. For example, many adventures in package management has shown that deploying an app -- whether it uses RubyGems, NPM, PIP, Go packages or whatever -- in a consistent, encapsulated form with all its dependencies is nigh impossible without building it once and then distributing that &quot;image&quot; to the servers. You <i>don&#x27;t</i> want to run NPM on <i>n</i> boxes on each deploy. Not only is it inefficient, there&#x27;s also no guarantee that it produces the same build every time on every node, or even that it will work (since NPM, in this example, uses the network and can fail). Just this problem alone demands something like Docker. Then there&#x27;s the next step of how you run the damn app and make sure that it keeps running on node failure.<p>Kubernetes <i>is</i> a dynamic environment. You tell it what to run, and it figures out how. It&#x27;s a beautiful sight to behold when you accidentally take a node down and see Kubernetes automatically spread the affected apps over the remaining set of nodes. It&#x27;s also beautiful to see the pod autoscaler automatically start&#x2F;stop instances of your app as its load goes up and down. It also feels amazing to bring up a parallel version of an app that you built from a different branch and only receives test traffic because you&#x27;re not ready to deploy it to production quite yet. It&#x27;s super nice to create a dedicated nodepool, then start 100 processing jobs that will queue up and execute when the nodepool has enough resources to run the next one. Kubernetes turns your cluster into LEGO blocks that can constantly shift around with little oversight. I&#x27;m never going back to a basic VM, not even if I&#x27;m running a single node.<p>Now, if your choice is not between Kubernetes and &quot;classical VMs&quot; but between Kubernetes and some other Docker-based solution, then... I would still choose Kubernetes. There are so many advantages, not least the ease with which you can transfer an entire orchestration environment to your developers&#x27; laptops -- Kubernetes runs fine locally, and all you need to replicate the same stack is a bit of templating. (We use Helm here.) The competition just isn&#x27;t as good.
评论 #16856369 未加载
评论 #16858016 未加载