What is Kubernetes? An Intro for Beginners

April 14, 2017 · By Paul Burt

It’s easy to forget how new Kubernetes and containers are. Those of us who’ve already embraced them should remember we’re on the frontier. If you’re a regular reader of the CoreOS blog, you’re likely with us on that bleeding edge.

This post will be a little different than our usual. Its goal is to introduce Kubernetes to folks who aren’t on the frontier. That might be those in tech who work on the business side, or developers who have yet to make the leap into containers. To tell the tale, we’ll get a little help from everyone’s favorite frozen treat—ice cream.

Want to head straight to a technical, in-depth introduction to Kubernetes? Get your copy of the white paper now.

Download the Kubernetes Primer

Imagine We’re in the Business of Ice Cream

We run a successful ice cream business that recently made the jump from being solely a local brick-and-mortar shop into a burgeoning, online operation. We’re still a small team, but we’ve hired some developers to help us meet the growing demand.

Our business wouldn’t be where it is today without that recent decision to add a sprinkling of technology. Our ice cream business just made the jump online last year. Since then, our site has led to a significant increase in sales. Going on the web extended our reach from just a few brick-and-mortar locations to virtually any shippable address in America. People are hungry for ice cream, and to keep up with demand we need to scale.

Building and updating the site means we hired a few more developers. To keep growing our business, the developers busy themselves building new features. They say we need invoicing systems, temperature monitors for the ice cream freezers, and algorithms to insure cost saving operations like Just-In-Time delivery. It’s a lot. And, on top of all of this, our developers now say we need something called “Kubernetes.”

We do a search for Kubernetes. There are pages of results talking about the history of Linux, LXC containers, cgroups, and a bunch of other technical jargon. It looks complicated. We ask our developers if they can help us understand why our simple ice cream business needs Kubernetes. It’s already complicated enough without this extra stuff, isn’t it? After all, we don’t want to invest just because our devs want to try something new.

The devs and I sit down. They begin with noting: before I can understand Kubernetes I need to first understand containers.

One developer, Bob, explains, “You know how occasionally our website works on Alice’s machine, but not mine?” The devs assure me this happens regularly. They explain this is caused by differences in Alice's and Bob’s machine environments. Containers allow them to specify exactly which parts of those environments they want. That means they spend less time debugging environment issues, and more time developing. Containers are also easy to package and move; this means it’s easy to move code from development to production.

They also point out that containers can be cheaper. Containers are lighter, and often utilize compute resources more efficiently. That means a move to containers might allow us to run more applications per server.

Sounds great. Let’s put our software in containers. The developers respond that they’ve already started doing that. They continue, it’s an easy transition to using systemd, or some other init system. Init system? The devs say it’s not too important, other than it’s something that manages containers. What we want to know is, when can we get back to selling ice cream?

The devs say we’ll soon be managing hundreds of containers. That sounds like a lot, and yes, it’s a lot. They lead us back to the original question. What is Kubernetes? Why do we need it? How much technology is really required to sell ice cream?

Kubernetes is a way to manage containers. If we need to manage hundreds of containers, the best way to do that is with automation. That’s what Kubernetes is. In a world without Kubernetes, we’d need to manually update hundreds of containers every time we release a new feature on the site. And, we release all the time! Doing it manually is error prone. Errors in the ice cream business are bad news. Ice cream melts.

Kubernetes automates all this container stuff. What if a container crashes? Kubernetes creates a new one. How does a container know which computer to run on? Kubernetes checks with a scheduler. So, if our freezer’s temperature monitor crashes and needs to be re-deployed, or we need to rollout a new version of the site, Kubernetes has us covered. It sounds like Kubernetes simplifies a lot of backend technology management needed for a massively growing business like this one.

This is starting to sound a bit like magic. The Kubernetes site says it ‘self-heals’? Kubernetes is smart enough to automate rollouts and rollbacks? I ask aloud, and the developers respond with encouragement. At least I’m asking the right questions. “If you really want to know how a machine works, look at its parts. Here’s what you need to get the basics.” A dev sends me a link to a Kubernetes white paper.

What is Kubernetes?

Kubernetes is container orchestration. It’s how to run containers at scale.

Kubernetes is smart, it’s automated, and it’s easy to interact with. Is it all sunshine and rainbows, or are there any risks? That’s the best part, the devs explain. Kubernetes is an open source project started at Google, coming from years of their own operational container knowledge. Kubernetes now lives under the Cloud Native Computing Foundation, a vendor-neutral home. Kubernetes also has strong community support. According to the tech news, it’s one of the fastest growing projects of all time.

Kubernetes can run anywhere: on bare metal, or in the cloud, which means no golden handcuffs. We’re free to take Kubernetes to any cloud, be it public, private, or both.

Despite it's astounding adoption rate, many new users find the learning curve to be rather steep. There are a lot of concepts to get familiar with, but thankfully there’s also a thriving community online. The devs say there are some good solutions for easing into the platform.

Check out a White Paper to Learn More

Hungry for more? We’ve whipped up a Kubernetes White Paper that explains the basics of Kubernetes in detail.

What’s a pod, a service, or the control plane? How do I expose a service publicly? How are running pods updated? This white paper is our guide. If you’re interested in brushing up on the basics, or want to introduce a friend to Kubernetes, this white paper is a good place to start.

It’s ready for download, now.

Join the CoreOS team and open source community in person at CoreOS Fest San Francisco, May 31-June 1, to learn more.