The Complete Guide to What is Kubernetes

avatar
Alan Leal
Calendar icon
August 26, 2019

Whether you’re a TCO, stakeholder, or project manager leveraging virtualization and the cloud is all about shifting the balance between your applications and workloads, making you money and costing you money. That is the common denominator lens that all three groups should view their understanding of Kubernetes and containerized applications. So, with that said, what is Kubernetes?

What is Kubernetes?

Kubernetes is an open-source platform for managing automating deployment and scaling containerized applications, workloads, workflows, and services. This is a big deal for enterprises that likely have hundreds of applications providing thousands of services to millions of internal and external end users. Kubernetes makes it easier to manage (orchestrate) all those applications to save money and IT time/personnel hours, so you can use those applications more efficiently and in more innovative and varied ways.

There are actually many business uses and outcomes that you can gain through the use of Kubernetes. But to unpack those possibilities, we have to start with understanding containerization. The simplest way to understand containerized applications is to see them as mini-operating systems (OS) that only contain the code to run one specific application (source: Google).

Containers Vs Virtual Machines

Virtual machines (VMs) have been the foundation of cloud computing for some time and continue to hold a great deal of sway for businesses. But as web application development, mobile app development, enterprise application development grows in complexity, containers have begun to displace their use. So, why are containers preferred over traditional computing methods?

Containers are More Cost Effective

Let’s say you have an e-commerce store app that’s seeing a surge of downloads and use on the app store and demand is surging. You need to duplicate your app (or, to be more accurate, create more instances).

Before the use of containers, you would have duplicated both the code your app needs to run and the rest of the supporting operating system (OS), usually a virtual machine (see the diagram above).

In effect, you would have to pay for computing resources that your application doesn’t even need, which then makes scaling-up overly expensive with higher Opex for cloud services and higher Capex for on-premises data centers. You’ll basically pay for computing resources meant to run an entire OS instead of just the specific code you need to run your application. Using containers means you only need to duplicate the specific code your app needs to run and nothing else.

Kubernetes, Containers, and their Business Benefits

While eCommerce app development can see many benefits from Kubernetes, retail web application development can also see massive gains. Here are just three examples of real-world Kubernetes deployment outcomes:

  • Sports shoe giant Adidas runs 100 percent of their ecommerce site on Kubernetes, where its reduced site load time by half and increased relapse updates from every 4-6 weeks to 3-4 times a day. With 4,000 pods, 200 nodes, and 80,000 builds per month, Adidas is now running 40% of its most critical, impactful systems on its cloud native platform, according to a Cloud Native Computing Foundation case study.
  • Nordstrom’s use of Kubernetes increased operations efficiency by improving CPU utilization from 5x to 12x depending on the workload, according to a Kubernetes case study.
  • China’s largest retailer JD.com reduced their deployment time from hours to seconds with a 30 percent efficiency improvement measured in IT costs and the potential to save millions of dollars each year, according to another Kubernetes case study.

Using Kubernetes and containers can mean the following benefits for your applications and business:

  • Will need fewer resources when duplicated for multiple users
  • It’s now a much smaller file, so it loads faster so you can respond to demand spikes faster
  • Allows you to house microservices within containers, which speeds up application development, and new services/updates to the applications.
  • Provides many abstractions and APIs that facilitate a cloud native microservices architecture approach to building apps and organizing development teams so teams can be smaller, agile, and specialized so each team can focus on a single, smaller microservice
  • Makes it easier to run any app on hybrid and multi-cloud environments to put the right workload on the right cloud and avoid vendor lock in
  • Minimize resource use and maximize your cloud and hardware investments via a container-based architecture across a portfolio of large enterprise apps
  • Allows your IT teams to manage large applications more efficiently across many containers by handling the many details of maintaining container-based apps via the Kubernetes API.
  • Facilitates Cloud native app development
  • Supports a Hybrid and Multi-cloud strategy
  • Lays the groundwork for AI and ML solutions that rely on containerized deployments, APIs, and Kubernetes

Containerized applications that take advantage of cloud native microservices architecture can have a major impact on healthcare, financial services and fintech app development as two examples. To learn more about how Kubernetes, containers, and microservices can open new business benefits in banking and healthcare, download our banking eBook and our Healthcare eBook. Other benefits include:

Managing Multiple Containers with Kubernetes

In most cases, you have multiple containers supporting one application — you need those containers to ‘speak’ to one another. This is where Kubernetes is essential.

Scaling Your Deployment to Meet Increased Demand

Let’s return to our e-commerce store app example. If there’s a surge of demand for that app because of Black Friday or Boxing Day rush, you could use Kubernetes to rapidly activate new instances of your containers and satisfy the demand spike. You avoid crashes, delays, errors, and other issues that will inconvenience your customers.

Load Balancing & Disaster Recovery

If you work with a public cloud hosting provider, such as Amazon, Google, or Microsoft, you can also deploy your containers across different regions. This helps build redundancies and ensures high availability rates in case a data center fails in one area. You can also recover more easily if a cyber-attack or critical error strikes your app.

Simplifying Updates & Bug Fixes

Your e-commerce store app might rely on multiple containers. For example, the application is on one container, but the database is on the other. However, you learn that the user interface, i.e., the application container, has a security vulnerability.

When you fix that vulnerability in the application container, you don’t have to worry about messing up the database.

They’re independent of one another, so changing one doesn’t affect the other. This simplifies updates and bug fixes by saving development time and cost as well as reducing risk, such as an application crash (and inconveniencing the customer).

Faster Application Development with Kubernetes

Companies across healthcare, finance, retail, and other sectors use Kubernetes to develop applications faster and reduce their time-to-market, get visibility, lower hardware costs, improve app security, and more. Ecommerce app development, healthcare app development, and fintech app development among others can benefit from Kubernetes, which we discuss in our article about the benefits of Kubernetes.

Understanding the Structure of a Kubernetes Deployment

By now, you should be familiar with containers, (you can revisit the earlier section), but those are only one part of Kubernetes.

A Kubernetes Deployment at a Glance

Source: Kubernetes Bootcamp

In fact, you can think of containers as the smallest unit in Kubernetes. From there, you would work with nodes, pods, and clusters.

What is a Kubernetes Pod?

In Kubernetes, a ‘pod’ is a wrapper that contains one or multiple containers.

In most cases, a pod usually houses one container, though there are rare cases where you could have two or more containers in a pod.

Example of a Pod

(Source: Kubernetes.io)

For example, your retail e-commerce financial institution or healthcare services provider could have its container app and another container to collect logs or activity about who’s accessing your app. Different containers could join this for different services like product catalog access, different financial services, or health service functionality access. Overall, the pod is Kubernetes’ most basic form of deployment.

What is a Kubernetes Node?

The next Kubernetes stage is the ‘node’, which is basically the physical server or the virtual machine (VM) that’s running your pods. Just consider the node as the actual resources you have at your disposal to run your application. Each Kubernetes node can support one or multiple pods. Within Kubernetes’ framework, the node helps with ensuring your app has sufficient resources to keep running.

What is a Kubernetes Cluster?

A Kubernetes ‘cluster’ is basically a grouping of nodes.

You could think of a cluster as a data center. But if you deploy Kubernetes with a public cloud host like Google, you wouldn’t put all of your eggs in one basket, or cluster.

Instead, you would put your pods in multiple clusters so that your app will remain active, even if one cluster goes down.

This Kubernetes multi-cloud approach makes sure that even if a data center goes down, your customers will still be able to access and use your e-commerce app. In fact, this is a critical aspect of web application development for the cloud, where you develop, expecting the system will fail. With the ability to leverage multiple clusters to host your application, Kubernetes facilitates that kind of development.

What is a Kubernetes Manifest?

A Kubernetes Manifest is a place where you define all the properties you want to deploy using Kubernetes. You’re basically telling Kubernetes everything about your application — how it works, what it connects to (such as databases) and the services it uses.

What are Your Other Deployment Options?

As you might imagine, Kubernetes and containerized applications aren’t necessarily your only deployment options. You can deploy, manage, and scale your application in other ways, but as you’ll see later, these alternative approaches present major challenges.

Alternatives to Kubernetes

If containerization is your way forward, you’ll find that Kubernetes is just one of several major options for managing your system. These include Pivotal Cloud Foundry and Docker Swarm.

Pivotal Cloud Foundry

The biggest advantage of using Pivotal Cloud Foundry (PCF) is that you can agnostically send your applications to any cloud host and any data center. So, with PCF, you can move your code from Azure to Google to Amazon seamlessly. However, PCF’s major drawback is its cost. You’ll have to pay for the application instances and service instances, and these costs can add up quickly.

Docker Swarm

Docker Swarm is a Kubernetes alternative that is more expensive and less widely adopted than Kubernetes. The lack of adoption will make it harder for you to source talent or developers to support your system, which can add to the cost of maintaining your system.

Thanks to its open-source nature, Kubernetes is not just widely supported, but it’s viewed as the industry standard for containerization. You can get Kubernetes orchestration suites from the top managed cloud hosting providers, including Amazon, Microsoft, and Google, and draw on a growing pool of developers. To see how easy it is to start with Kubernetes, see our article on the Google Kubernetes Engine.

Conclusion

Kubernetes already make up most of Google and Microsoft’s containerized workload, with Amazon catching up. In fact, Google also runs about 2 billion containers at any given time. That is because they’re so easy to scale. Thanks in part to a system called Kubernetes.

Nearly 90 percent of containers are orchestrated by Kubernetes, Amazon ECS, Mesos, or Nomad, according to the latest Datadog Report. A big driver for that growth is the fact that businesses, including yours, need to stay competitive in the age of digital transformation.

But adopting an existing Kubernetes build will only get you part way there. You need DevOps expertise to take you the rest of the way. And that can take time that you might not have when it comes to overtaking your competitors. That’s why it’s critical to work with an experienced Kubernetes consulting partner to rapidly build your solution and up-skill your own team.

At Techolution, we build usable market-ready solutions within weeks of starting the project. Why spend half a year when you can deploy an automated, easily scalable, and highly functional app before your competitors? To learn how we can partner with you to improve business outcomes and the bottom line with Kubernetes, follow this link and then, let’s talk!