Tytus Kurek
on 16 March 2023
Kubernetes vs OpenStack: which one to choose?
Kubernetes vs OpenStack is a common dilemma that organisations face when considering the modernisation of their IT infrastructure. Both are well-established open-source technologies for building cloud infrastructure, and both bring tangible benefits, especially when used in combination. Yet, they differ significantly and need to be properly bundled to feel like a fully-integrated solution.
What does this mean in practice? Let’s take a look! We will start with a short overview of OpenStack and Kubernetes. Then, we’ll highlight the similarities and differences between the two and discuss how to integrate them properly with each other.
Register for a webinar if you prefer to watch instead >
Kubernetes vs OpenStack: what on earth are they?
The confusion around the “Kubernetes vs OpenStack” conundrum usually stems from the lack of understanding of what these two actually are. Is Kubernetes the next OpenStack? Has Kubernetes replaced OpenStack? How do these two technologies relate to each other? In order to understand that, let’s take a step back and try to define OpenStack and Kubernetes.
What is OpenStack?
OpenStack is a cloud platform. It manages distributed compute, network and storage resources, aggregates them into pools, and allows for on-demand provisioning of virtual resources through a self-service portal. If you’re familiar with Amazon Web Services (AWS) Elastic Compute Cloud (EC2), OpenStack mostly resembles its behaviour, enabling you to build fully-functional private and public clouds. OpenStack is widely used by leading telcos, service providers, financial institutions, manufacturing companies and governments.
What is Kubernetes?
Kubernetes (AKA K8s) is a container orchestration platform. It automates the deployment, networking, scaling, and availability of containerised workloads and services. Running containers in small numbers is easy enough to be done manually. However, managing them at scale in production environments can be a significant challenge without the automation that Kubernetes offers. These days, Kubernetes is successfully used across the entire spectrum of infrastructure, including public clouds, data centres, edge sites and even IoT.
Kubernetes vs OpenStack: similarities and differences
OpenStack and Kubernetes were created by two different communities to solve two different technical problems. As a result, although their functionalities sometimes overlap, their operational principles are different. Let’s now take a look at the most common similarities and differences between these two successful projects.
Supported workload types
Historically, OpenStack used to support virtual machines (VMs), and Kubernetes used to support containers only. This is no longer the case. Over the years, those technologies have evolved, ensuring coverage for all types of workloads. OpenStack now supports bare metal workloads through the Ironic project and containerised workloads through the Magnum project. In turn, Kubernetes users can leverage tools, such as Metal³, to provision physical machines and Kata containers or KubeVirt to provision VMs.
Metal management capabilities
OpenStack was designed to run directly on bare metal. Therefore, its metal management capabilities are usually more advanced than the ones offered by Kubernetes. Even though Kubernetes can also run directly on the physical layer, it lacks thirteen years of experience brought by OpenStack. Integrations with a variety of storage platforms and software-defined networking (SDN) controllers available out there, as well as numerous performance extensions (e.g. hardware offloading), are usually better supported in OpenStack.
Application management capabilities
On the other hand, when it comes to application management, Kubernetes is second to none. Kubernetes was designed with a rich set of application management capabilities in mind, including various controllers, such as ReplicaSet or DaemonSet, and cloud-native features. Those include rolling upgrades and autoscaling, for example. While the OpenStack community has made some efforts in the past to fill this gap with the Heat and Murano projects, they have not had much success, leaving OpenStack behind Kubernetes in the application management space.
Combining the best of two worlds
At this point, it should be clear that neither OpenStack nor Kubernetes can deliver the full range of capabilities offered by the other project. They were simply made for different purposes. This is why bundling them together makes the most sense.
Kubernetes on OpenStack
Running Kubernetes on top of OpenStack comes with a number of advantages. First of all, it’s way easier than running it directly on bare metal. There are a handful of tools enabling instant provisioning of Kubernetes clusters on OpenStack, including Juju, Magnum or Cluster API. Each user or entity gets their own pool of cloud resources where they can spin up their K8s on demand, benefiting from the multi-tenancy offered by OpenStack. In addition, as mentioned earlier, those K8s clusters can also leverage OpenStack’s metal management capabilities, including proper load balancing through Octavia, vGPU resources provisioning and more.
OpenStack on Kubernetes
In turn, running the OpenStack control plane on top of Kubernetes also has its pros. Most importantly, it provides better isolation of OpenStack services, effectively decoupling them from the underlying operating system (OS). Furthermore, in such a setup, OpenStack can benefit from lifecycle management capabilities offered by Kubernetes, making historically complex operations, such as upgrades, way easier. Finally, standardising on K8s makes OpenStack’s architecture relatively lightweight, effectively transforming it into something that everyone can play with, even on their workstation.
How to stack the stack?
Wait a second. So is the desired setup Kubernetes on OpenStack on Kubernetes?
You guessed right! Even though it sounds awkward, this architecture setup has the most advantages, effectively enabling you to combine the best of both worlds on one platform. Among the various platforms available out there, Ubuntu stands out for its versatility. Ubuntu provides streamlined access to both OpenStack and Kubernetes, effectively empowering developers with all necessary infrastructure tools. Now, when it comes to production environments, an optional commercial subscription provides access to enterprise-class services.
One subscription to rule them all
Ubuntu Pro is the most comprehensive Linux enterprise subscription, covering all aspects of open source, including security, compliance and support coverage. With Ubuntu Pro, you can focus on expanding the benefits of your infrastructure, while Canonical makes sure your cloud receives security updates, bug fixes and 24/7 technical support with aggressive service level agreements (SLAs).
Still thinking Kubernetes vs OpenStack? Use one subscription and rule them all!
Learn more about Kubernetes vs OpenStack Kubernetes and OpenStack
OpenStack and Kubernetes have a lot in common. Both serve as a foundation for open-source cloud infrastructure implementations, and both can exist without each other. However, when you combine them, you can get a full range of capabilities only the Ring of Power can rival.
Join our webinar on 5 April for highly technical content on the Kubernetes vs OpenStack topic, live demos showcasing an integrated solution and more.
Visit our OpenStack and Kubernetes pages to learn more about the world’s leading open-source infrastructure projects.
Take a look at our containerization vs virtualization blog for more information on the underlying technologies used by OpenStack and Kubernetes.
Get in touch with Canonical for commercial support with your project.
Further Reading
Learn more about Canonical’s open source infrastructure solutions.