13 ms·
The simple answer is that Kubernetes isn't really any of the things it's been described as. What it /is/, though, is an operating system for the Cloud. It's a
by tristor 6y ago
The simple answer is that Kubernetes isn't really any of the things it's been described as. What it /is/, though, is an operating system for the Cloud. It's a set of universal abstraction layers that can sit on top of and work with any IaaS provider and allows you to build and deploy applications using infrastructure-as-code concepts through a standardized and approachable API.
Most companies who were late on the Cloud hype cycle (which is quite a lot of F100s) got to see second-hand how using all the nice SaaS/PaaS offerings from major cloud providers puts you over a barrel and don't have any interest in being the next victim, and it's coming at the same time that these very same companies are looking to eliminate expensive commercially licensed proprietary software and revamp their ancient monolithic applications into modern microservices. The culimination of these factors is a major facet of the growth of Kubernetes in the Enterprise.
It's not just hype, it has a very specific purpose which it serves in these organizations with easily demonstrated ROI, and it works. There /are/ a lot of organizations jumping on the bandwagon and cargo-culting because they don't know any better, but there are definitely use cases where Kubernetes shines.
- verdverm 6y agoYes, people ought to do a side by side comparison of a new user learning to K8S v AWS v GCP before claiming Kubernetes adds more complexity than it returns in benefits. Remember the first time you saw the AWS console? And the last time?
- techntoke 6y agoWhy do a comparison? K8S runs on AWS and GCP. They have managed services for setting up one. If you know K8S as a developer, then you simply consume the cloud K8S cluster.
- kelnos 6y agoI think the point is that there are people that claim that k8s adds a ton of complexity to your environment. But if you compare k8s alone with managing your infrastructure using (non-k8s) AWS or GCP primitives, you'll find that the complexity is similar.
- verdverm 6y agoExactly
- Phrodo_00 6y agoWhile that's true on the managing instances side, you also need to actually deploy the infrastructure to manage them (If you're not using some PaaS offering). You don't need to do this for other IaaS. Honestly the last time I looked at k8s was like 5 years ago, but back then it looked like a pretty big pita to admin.
- verdverm 6y agoThe last 5 years have been transformative for both cloud native development and also open source software It is a completely different world that stretches far beyond Kubernetes, though I attribute much of the change to what has happened from / around k8s -> cncf It's so easy, I can launch production level clusters is 15 minutes with four keystrokes and make backups and restore to new ephemeral clusters with a few more simple commands https://github.com/hofstadter-io/jumpfiles https://github.com/hofstadter-io/jumpfiles (I'll be pushing these updates this weekend, haven't slept in 24 hours as reworked everything to be powered by https://cuelang.org https://cuelang.org )
- merb 6y ago> but back then it looked like a pretty big pita to admin - well it's also a pita to update services without a downtime. - and it sucks to update operating systems without a downtime. - sometimes you reinvent the wheel, when you add another service or even a new website however with k8s everything above is kinda the same, define a yaml file, apply it, it works. and also k8s itself can be managed via ansible/k3s/kops/gke/kubeadmin/etc... it's way easier to create a cluster and manage it.
- deleted 6y ago[deleted]
- Aeolun 6y agoThe problem is that what the nodes in AWS are doing is fairly transparent. When my kubernetes pod does not come up, it’s always a hell of a pain figuring out why from just the events that kubernetes is giving me.
- ForHackernews 6y agoThat's exactly the point. You avoid lock-in to AWS or GCP by running on K8S instead. K8S becomes the "operating system": a standardized abstraction over different hardware.
- verdverm 6y agoI argue this is a good thing, like the Linux kernel and the Chromium kernel
- pixelmonkey 6y agoIsn’t a “standardized abstraction over different hardware” just... an actual operating system? Isn’t “the operating system of the cloud” just... the actual operating system running on your cloud VMs? If you script a deployment environment atop vanilla Linux distros (e.g. ansible), you also avoid public cloud lock-in. (Side benefit: you also avoid container engine lock-in, and container layer complexity!) Containers are a standard abstraction over the operating system, not over the hardware (or the VM, even). This has its use cases, but making it “the standard” for deployment of all apps and workloads is just bananas, in my view.
- verdverm 6y agoKubernetes, when viewed as the OS for the data center, controls, manages, and allocates a pool of shared resources. When I install and run an application on my laptop, there are a ton of details I don't care about that just happen magically. Kubernetes maps this idea onto the resources and applications of the cloud. Again, Kubernetes is far more than just deploying, running, mad scaling an application. It allows so many problems to be solved at the system level, outside of an application and developers awareness. Take for example restricting base images at your organization. With Kubernetes, SecOps can install an application which scans all incoming jobs and either rejects them, or in more sophisticated setups, hot swaps the base image
- yongjik 6y agoHmm really? My experience is that, with k8s I end up learning all the complexities of k8s in addition to AWS. Besides, personally I find AWS console much easier to understand. I don't get why people hate it.
- frompdx 6y ago> I don't get why people hate it. Because it is hard to manage the configuration. It's why tools like terraform exist. Anecdote. I worked for a small company that was later acquired. It turned out one of the long time employees had set up the company's AWS account using his own Amazon account. Bad on it's own. We built out the infra in AWS. A lot of it was "click-ops". There was no configuration management. Not even CloudFormation (which is not all that great in my opinion). Acquiring company realizes mistake after the fact. Asks employee to turn over account. Employee declines. Acquiring company bites the bullet and shells out a five figure sum to employee to "buy" his account. Could have been avoided with some form of config management.
- cmckn 6y agoSounds like the exact nightmare a previous employer was living. AWS' (awful) web UI convinces the faint of heart to click through wizards for everything. If you're not using version control for _anything_ related to your infrastructure...you have my thoughts and prayers. +1 for "click-ops", perfectly put.
- frompdx 6y ago> you have my thoughts and prayers. Pretty much. The lesson learned for me was to always have version control for the complete stack including the infra for the stack. I like terraform for this. Terragrunt at least solves the issue of modules for terraform reducing the verbosity. Assume things could go wrong and you will need to redeploy EVERYTHING. I've been there.
- bsder 6y ago> Acquiring company realizes mistake after the fact. Asks employee to turn over account. Employee declines. Acquiring company bites the bullet and shells out a five figure sum to employee to "buy" his account. Could have been avoided with some form of config management. That is completely the wrong lesson from this anecdote. 1) The acquiring company didn't do proper due diligence. Sorry, this is diligence 101--where are the accounts and who has the keys? 2) Click-Ops is FINE. In a startup, you do what you need now and the future can go to hell because the company may be bankrupt tomorrow. You fix your infra when you need to in a startup. 3) Long-time employee seemed to have exactly the right amount of paranoia regarding his bosses. The fact that the buyout appears to have killed his job and paid so little that he was willing to torch his reputation and risk legal action for merely five figures says something.
- gopalv 6y ago> Remember the first time you saw the AWS console? And the last time? There was a time in between for me - that was Rightscale. For me, the real thing that k8s bring is not hardware-infra - but reliable ops automation. Rightscale was the first place where I encountered scripted ops steps and my current view on k8s is that it is a massively superior operational automation framework. The SRE teams which used Rightscale at my last job used to have "buttons to press for things", which roughly translated to "If the primary node fails, first promote the secondary, then get a new EC2 box, format it, install software, setup certificates, assign an elastic IP, configure it to be exactly like the previous secondary, then tie together replication and notify the consistent hashing." The value was in the automation of the steps in about 4 domains - monitoring, node allocation, package installation and configuration realignment. The Nagios, Puppet and Zookeeper combos for this was a complete pain & the complexity of k8s is that it is a "second system" from that problem space. The complexity was always there, but now the complexity is in the reactive ops code, which is the final resting place for it (unless you make your arch simpler).
- tly_alex 6y ago> The SRE teams which used Rightscale at my last job used to have "buttons to press for things", which roughly translated to "If the primary node fails, first promote the secondary, then get a new EC2 box, format it, install software, setup certificates, assign an elastic IP, configure it to be exactly like the previous secondary, then tie together replication and notify the consistent hashing." If I understand this correctly, all of the things could have been automated in AWS fairly easily . "If the primary node fails" Health check from EC2 or ELB. "get a new EC2 box" ASG will replace host if it fails health check. "format it" The AMI should do it. "install software, setup certificates" Userdata, or Cloud-init. "assign an elastic IP, configure it to be exactly like the previous secondary, then tie together replication and notify the consistent hashing" This could be orchestrated by some kind of SWF workflow if it takes a long time or just some lambda function if it's within a few mins.
- AlphaSite 6y agoYou could do that, but why? Just use k8s and move on.
- hootbootscoot 6y agoAnsible. You can keep your YAML and deploy actual virtual servers on your cloud provider. Kubernetes is an introvert and this doesn't correspond to anything but it's padded cell walls. In Ansible it's an extrovert, an exoskeleton. Kubernetes insides out makes it right again. Make sense?
- verdverm 6y agoNo, not following. I understand how master based provisioning management systems had their time and place, but we've largely moved beyond that to baking images, whether containers or VMs. Running a master based system comes with a whole house of other issues. Ansible is now relegated to a better system than based for installing packages and configuring the baked image. The time of booting a vanilla imstamce and then installing software when a scaling events happens is over. By the way, what does ansible do to help with scaling applications?
- guywhocodes 6y agoI've spent in total a tenth as much time learning k8s and related systems, as I have spent on AWS. Most situations I have a direct comparison, k8s takes less ops. Often thanks to helm. The AWS console is designed for lockin and I could use configuration management for AWS too but the time required to go through their way of doing x is just not worth it. Unless I want to become a AWS solutions architect consultant
- verdverm 6y agoHelm is becoming its own nightmare, fortunately work is already begun to replace it gracefully
- acidity 6y agoCan you expand on this? We are just starting on Helm so curious to know your thoughts.
- verdverm 6y agoSure, the most asinine thing (borrowing from Rob Pike) is to have a system where invisible characters define the scope and semantics of what you are writing. Now Helm takes this one step further (and I one beyond that before saying no more to myself and discovering https://cuelang.org https://cuelang.org) and starts using text interpolation with helpers for managing indentation in this invisibly scoped language. I hacked in imports, but was like, ok, making this worse. So there's this problem and a number of experiments are going on. One camp has the idea of wrapping data / config in more code. These are your Pulumi and Darklang like systems. Then there is another camp that say you should wrap code in data and move away from programming, recursion, and Turing completeness. This seems like the right way to me for a lot of reasons both technical and haman centric. I've pivoted my company (https://github.com/hofstadter-io/Hof https://github.com/hofstadter-io/Hof) to be around and powered by Cue. Of the logical camp, it is by far going to be the best and comes from a very successful lineage. I'm blown away by it like when I found Go and k8s.
- 6y ago
- nihil75 6y agoIaaS is not "the cloud". it was in 2008 when all we had was EC2 and RDS. Today Kubernetes is the antithesis of the cloud - Instead of consuming resources on demand you're launching VMs that need to run 24/7 and have specific roles and names like "master-1". Might as well rent bare-metal servers. It will cost you less.
- deadmutex 6y agoDoesn't kubernetes also have autoscaling capabilities? https://kubernetes.io/blog/2016/07/autoscaling-in-kubernetes/ https://kubernetes.io/blog/2016/07/autoscaling-in-kubernetes...
- cortesoft 6y agoThat is autoscaling within the cluster.... not the cluster itself. Although, managed kubernetes clusters let you auto-scale the cluster itself, so i think the GP is wrong.
- frompdx 6y agoCheck out Cluster AutoScaler: https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler https://github.com/kubernetes/autoscaler/tree/master/cluster... This tool allows you to autoscale the cluster itself with various cloud providers. There is a list of cloud providers it supports at the end of the readme.
- cortesoft 6y agoI misread the link... it is genuine cluster scaling
- DenisM 6y ago> Might as well rent bare-metal servers In light of this statement, what do you make of the fact that billions of dollars are spent on EC2? And of the people who spend that money?
- 6y ago
- enos_feedler 6y agoOS for the cloud is exactly what it is. I see AWS, Azure and GCP as OEMs for cloud, just like Samsung, Oppo, Motorla, etc are OEMs for smartphones. Android was the open source abstraction across these devices. K8s is the open source abstraction across clouds. The meaning of "app" on top of these two operating system abstractions is entirely different and the comparison probably doesn't extend beyond this. From a computing stack standpoint though, it makes sense.
- tly_alex 6y agoAWS and other cloud provider provides far more reliable and simpler features/toolkings than k8s. For teams that's serious about building services on the cloud, having k8s to take over certain area of orchestration make sense, but the "operating system" K8s provides is just a tiny peace of the overall infrastructure.
- sev 6y agoI think this is a good answer. I'll add that as soon as you need to do something slightly more complex, without something like k8s you aren't going to be happy with your life. With k8s, it's almost a 1 liner. For example, adding a load balancer or a network volume or nginx or an SSL cert or auto scaling or...or...or...
- d23 6y agoCome on. What? Setting up a load balancer or nginx is considered complex now?
- th0ma5 6y agoWell, set me up one. :P
- CameronNemo 6y agomy pubkeys are below, send me an ip address and port to an ssh server https://github.com/cameronnemo.keys https://github.com/cameronnemo.keys
- th0ma5 6y agoMy what and what? :P I do get your point, it is "easy" for some definition of such, but to be fair, k8s would automatically put the ip and port in for my part of it all at least.
- jacobsenscott 6y agoAnyone can ssh into a server and apt-get haproxy and tweak the configuration and get it "working" where the definition of working is accepting and routing traffic. But that's just a hobby setup. When people say setting up a load balancer is complex they are talking about professional setups, not a one off software install on a single server.
- CameronNemo 6y ago
- dancemethis 6y ago"Approachable" The buzzword mumbo-jumbo on the first paragraph alone (which isn't really even your fault or anything, just the bogus pomp inherent to k8s as a whole) is already a scarecrow to anyone that "wasn't born with the knowledge", really. It is pretty hard to get used to it. Brushing it away won't make it approachable.
- ransom1538 6y agoJust running docker-compose on load balanced machines is pretty close to having all k8s features (that would give you an endpoint, scaling, running pods[containers],heartbeats and nodes[vms]). If you run Kubernetes on GCP you will see it's just a wrapper of GCP vms, load balancers, instance groups and disks. EG: GCP k8's autoscaling for the nodes isn't any better than just simple GCP load balancers and instance groups (it literally is the same thing). k8's best feature (only?): specify yaml files to declare the setup. That is great! But, you make edits to this 4 times a year - that is a ton of complexity for those 4 git commits.
- crymer11 6y agoOff the top of my head, deployments and sidecars are both missing, which are incredibly useful.
- deleted 6y ago[deleted]
- viraptor 6y agoChange docker-compose to load balanced dokku nodes. Gives you the deployments and sidecars.
- jedieaston 6y agoDokku is magical. It blows my gob whenever I use it. It’s the best parts of Docker and Heroku together, and I can actually control everything that goes with my app.
- Aeolun 6y agoI find that Dokku requires me to do too much on the machine itself, well as forcing me into a certain model. I currently use exoframe with docker-compose files, and it's fantastic.
- 6y ago
- valuearb 6y agoI read the entire article and couldn’t figure out what Kubernetes is. Your description helped a little. Oh darn, I still don’t understand. Maybe I should learn what Docker is first?
- pnako 6y agoWhat if instead they revamped their ancient microservices into modern monolithic applications? I'm sorry, but I can't stand this kind of bullshit. You cannot possibly take two random things, put 'modern' in front of one word and 'ancient' in front of another, to justify changing things. The problem of Kubernetes is probably that people started drinking the microservices koolaid and now need complex solution to deploy their software that became more complex when they adopted a microservices architecture.