Earlier this year, at the 2017 CoreOS Fest user conference in San Francisco, hundreds of developers and operators got together to talk all things containers and open source.
Out of all the presentations and announcements during the event, I was particularly interested in the recent research paper conducted by 451 Research on behalf of CoreOS. It had some interesting things to say. In the paper, 451 Research uncovers three facts about container use today:
- Enterprises are adopting and using containers in production
- They’re seeing efficiency with portability and productivity
- They have concerns around security.
All of the findings seem reasonable given the current state of containers. But there was also a little surprise in the report, which 451 Research refers to as a “leapfrog mentality” — wherein companies see containers as a way to bypass building out IaaS or PaaS.
“According to the latest survey results, more than 75% of respondents think Kubernetes and other container management and orchestration software is sufficient to replace private clouds…”
This raises many questions including:
- Can Kubernetes itself allow you to skip building out a private cloud?
- Is it all inclusive of everything you need to run a cluster?
- Can private cloud and containers efficiently co-exist?
- Can containers benefit from a private cloud?
From the Rackspace point of view and based on our experience running Kubernetes in production for customers, I don’t think the respondents, or organizations in general, fully understand the value a private cloud brings to Kubernetes.
Exploring cloud and Kubernetes
Kubernetes needs more than just bare metal to run successfully. If you’re interested in running Kubernetes, you’ll want an infrastructure-as-a-service (IaaS) platform to supply the compute, networking and storage requirements — not to mention you’ll need to manage and operate this IaaS platform itself.
Why is this? Simply put, an IaaS platform supplies the basic plumbing — compute, networking, storage, etc. — that Kubernetes needs but doesn’t provide by itself. In addition to providing these basic service requirements, an IaaS platform will also enable rapid provisioning of resources, which allows you to take full advantage of the speed and agility of Kubernetes with infrastructure that can keep up.
Let’s look a little deeper, however, to better understand the benefits a private cloud IaaS platform can provide Kubernetes.
We’ll do so using the specific example of storage. More than likely, your cluster and the applications running on it will need to tap into some kind of persistent storage. Here’s a quick look at how Kubernetes abstracts the management of that via dynamic provisioning and StorageClasses.
“ When none of the static PVs the administrator created matches a user’s PersistentVolumeClaim, the cluster may try to dynamically provision a volume specially for the PVC. This provisioning is based on StorageClasses: the PVC must request a class and the administrator must have created and configured that class in order for dynamic provisioning to occur…”
What does this mean? With Kubernetes 1.6, dynamic provisioning was promoted to stable, which basically means Kubernetes can provision storage for itself from the underlying storage system that’s configured for it. This is a great improvement over the previous storage provisioning capabilities, in which the storage or PV (persistent volume) would need to be pre-created and staged for consumption to attach it to a pod. Kubernetes can now do that for you.
However, this improvement also creates new challenges — namely, there are a variety of supported storage options — how do you choose the right one? As we’ve worked with companies, we’ve seen many organizations struggle with selecting, installing and configuring the right storage option to meet their use case.
Continuing our storage example, simply choosing the right storage solution is only half the battle.
Not only will the solution need to be properly installed and configured, organizations will also need to tackle the challenges associated with scaling and supporting it in production. How do you handle alerting and monitoring, or connecting it to your company’s authentication system? Now repeat all this for networking and compute and figure out how to manage that in a cohesive way. Organizations without good answers to these problems will struggle to deploy, operate and scale Kubernetes environments.
You can handle this, of course, by picking third party management, authentication, and orchestration tools to handle your hardware — accepting that you’ll incur additional costs and complexity for your trouble. Or you could leverage a private cloud like OpenStack — which provides a robust approach to solving your challenges as well as solving many other problems Kubernetes can’t address.
OpenStack for Kubernetes: Benefits for all
The money and time that an OpenStack private cloud can save an operations team is immense when you look at what is required to deploy the infrastructure that Kubernetes sits on top of. In fact, the average Rackspace OpenStack Private Cloud customer saves $258,000 annually in cloud operations costs compared with a do-it-yourself approach. But how do you manage your IT sprawl while you transition your business into Kubernetes?
OpenStack lets you provision VMs and bare metal compute alongside your Kubernetes cluster. For example, you could run a bare metal node with a database that Kubernetes leverages, all under the same control plane — allowing you to scale, monitor, and manage it alongside your Kubernetes cluster.
Having all your infrastructure running in the same private cloud eases the complexity of managing disparate systems, providing a single environment that allows you to run your legacy workloads alongside Kubernetes. As you migrate your legacy workloads into containers you can reuse those same compute resources to expand your Kubernetes cluster.
The benefits of this approach seem to be clear-cut. Not only can you gain all the benefits of Kubernetes, you have a clear-cut path to adoption and expansion without having to set aside hardware, management resources and administrators strictly for the Kubernetes cluster. Kubernetes can leverage OpenStack capabilities without adding complexity.
Let’s review. At Rackspace, we don’t believe OpenStack is a competitor to Kubernetes. It’s not — and Kubernetes isn’t going to let you magically skip over private clouds. The fact of the matter is they’re complementary technologies.
OpenStack provides all the infrastructure to support a container management system like Kubernetes. Running it inside of OpenStack provides the cluster with the ability to dynamically provision compute, storage, and networking resources. Not to mention the controls, automation and orchestration OpenStack provides, giving you the ability to monitor and enforce quotas on the resources the cluster consumes. In short, OpenStack and Kubernetes can happily work together to solve customer challenges efficiently and effectively.
As the leading provider of OpenStack private clouds as a managed service, we have unique expertise around delivering Kubernetes on OpenStack. If you’re interested in what we can offer your organization, take advantage of a free strategy session with a private cloud expert — no strings attached. SIGN UP NOW.