Kubernetes and Complexity
ADVERT:
Digital Ocean is giving you one month free VPS.Try it out HERE
First off:
Kubernetes *is* a complex system. It does a lot and brings new
abstractions. Those abstractions aren't always justified for all
problems. I'm sure that there are plenty of people using Kubernetes that
could get by with something simpler.As an example my
son (9yo) wanted me to teach him Kubernetes but I started with simple
imperative Docker on the command line on a singleton GCE instance. Once
he gets those concepts nailed we'll start talking k8s.
That being said, I
think that, as engineers, we tend to discount the complexity we build
ourselves vs. complexity we need to learn.When you create a
complex deployment system with Jenkins, Bash, Puppet/Chef/Salt/Ansible,
AWS, Terraform, etc. you end up with a unique brand of complexity that
*you* are comfortable with. It grew organically so it doesn't feel
complex.But bringing new
people on to help on an organically grown system like this is difficult.
They may know some of the tools but the way that you've put them
together is unique. This is a place
where, IMO, Kubernetes adds value. Kubernetes provides a set of
abstractions that solve a common set of problems. As people build
understanding and skills around those problems they are more productive
in more situations.
There is still a steep learning curve! But that skill set is now valuable and portable between environments, projects and jobs.
Beyond this,
Kubernetes allows for "operations specialization". Not everyone has to
be an expert in all parts of the stack. Things like operating a cluster
can be handed off to specialists -- either on staff or via a cloud
provider.
The story of
computing is creating abstractions. Things that feel awkward at first
become the new norm. Higher layers aren't *simpler* but rather better
suited to different tasks. /11
Modern
JavaScript, for example, is incredibly complex. There are a ton of
concepts and ideas that are alien to, say, a C++ 3D game engine
programmer. When we created Kubernetes we aimed to create the *right*
abstractions for modern scalable server side apps. /end
Thanks for reading.Find me on twitter here https://twitter.com/jbeda
Comments
Post a Comment