What is Kubernetes?

Kubernetes is a system that automates the deployment and maintenance of containerized applications in the cloud or on-premise.

Overview

What it is: Kubernetes, originally developed by Google, is an open-source system that simplifies the deployment, orchestration, and management of container-based applications in the cloud or on-premise.

What it does: Kubernetes automates deployment and ensures that applications are given the resources they need to function optimally as demand fluctuates; thus saving time and money while ensuring applications function more reliably. Also, Kubernetes makes it easier to update and maintain said applications while they are running.

How it works: Kubernetes creates a ‘cluster’—essentially, a virtual computing farm, in which different containerized applications with different requirements can coexist. It offers intelligent tools to easily modify the cluster in an automated fashion.

Why it matters: Container-based approaches go one stage further than virtual machines and are seen as an appropriate response to applications that require dynamic scaling and distribution without the overheads of individual VMs. However, they also bring complexity and management challenges. Kubernetes looks to address these challenges, delivering the benefits of containerization without the headaches. With ‘containerized’ applications, orchestrating this is made easier, and, with Kubernetes, it’s easier to manage many containers. This is why Google, Slack, Shopify, and others use Kubernetes.

What to do about it: If your organization is looking to deploy containers at large scale, you should be looking to an orchestration approach. Kubernetes isn’t the only game in town (consider AWS elastic container service, ECS, or Docker Swarm) but it is becoming a de-facto standard. Know that Kubernetes is complex and that its implementation will require much thought, planning, and training.

Business Advantages

  • Intelligently gives applications the resources they need on an ongoing basis, ensuring that peak times are managed while overspending is avoided
  • Redeploys failed applications, increasing reliability
  • Makes application deployment easy to scale with further demand, providing a sustainable framework for growing enterprises
  • A large community of users makes support easier and fosters innovation
  • The pure open-source version of Kubernetes is free to use

Alternatives

Kubernetes is arguably the most popular cluster deployment system, but other options exist. Docker Swarm and Nomad, for example, offer some of Kubernetes’ features but are much easier to deploy. Meanwhile, Apache Mesos, designed for very large clusters, is another professional system used by Twitter, Airbnb, and others. No one-size-fits-all solution exists: the size of your operation, the preferences of your administrators, and your budget will dictate which choices are appropriate. Note however that Kubernetes may become the de-facto option.

Making Kubernetes Easier

As alluded to above, Kubernetes is complex and sometimes difficult to implement, but it is possible to make it simpler. Kubernetes is offered as a managed service by various firms, including Google, who produce Google Kubernetes Engine (GKE), a service that makes it simple to harness Kubernetes to deploy applications without fussing with too many details. GKE is used by, among others, Pizza Hut. Others include Platform9, a cloud management service that uses Kubernetes. As Kubernetes evolves so do the tools and platforms around it, for example enabling access to dynamic and structured storage resources; equally, and increasing number of vendor offerings (for example, applications security or management) are now being delivered as a Kubernetes container.

Do You Need Kubernetes?

One engineer at Trivago referred to Kubernetes as “the 800-pound gorilla of container orchestration.” The meaning of this: Kubernetes is extraordinarily powerful, but also cumbersome. It contains a rich feature-set, but the features are more than many enterprises need. It’s constantly evolving, which means more innovation, but also more to keep up with. As with any elaborate tool or approach, the question that needs to be asked is whether Kubernetes is a necessary response to a business need that can directly deliver value, rather than an end in itself.