The latest cloud infrastructure announcements, technical solutions, and enterprise cloud insights.

Is Persistence for Containers Important to You?

Ed Beauvais
Director, Product Management

Many applications don’t require persistence. I refer to these types of apps as "momentum-building apps" because they typically deliver quick wins in terms of containerization. There are many more applications, however—for example, many enterprise applications—that must have some level of persistence and state. If you or your developers are asking the following questions, storage for containers is an important topic to you:

  • How do I manage sharing data across containers?
  • What happens when a host fails?
  • Is there a common place for container resources during deployments?

All of these examples show the need to have a persistence layer for containers. In the most simple example, if a container or host fails or is deleted, a customer with a shared persistence layer can recover and retrieve state by restarting the container on another host.

But storage is complex. Every container might have different storage needs for its specific workload. Add hundreds and thousands of different container types to a single host, and now you have a challenge in both scale and complexity. And I haven't even mentioned the range of storage options. With all this in mind, let's look at some of the challenges ahead, and how Oracle Cloud Infrastructure is meeting those challenges.

Top Challenges

Of the many challenges of adopting persistent storage, here are some of the top ones:

  • Planning for storage needs to happen up front. Almost all architectures need state at some point. Longer-running containers and more complex enterprise applications need state. Take the time necessary to evaluate the needs of each application to ensure that you have the right storage for it.
  • There are many options for storage. Each container might have different storage needs. Let the workload and service levels drive selection. These factors also add to the complexity.
  • Containers are distributed, and storage must allow for this flexibility. Applications based on microservices are also distributed, and this creates added complexity, distribution, and scale.
  • Containers change the game in terms of the elements under management. What happens when each container has its own storage needs and needs to track the dynamic nature of the number of changes today. Does the storage you have chosen have the ability to scale and protect this data?

How Oracle Cloud Infrastructure Addresses Persistence for Containers

After attending DockerCon Europe, I participated in a storage panel that hit on a number of these topics, and I followed it up last month by attending KubeCon + CloudNativeCon. It has become clear to me that enterprise applications, containers, and persistent storage are intersecting. I want to make you aware of what Oracle Cloud Infrastructure is doing to address these challenges.

Oracle Cloud Infrastructure provides two flexible choices for Kubernetes deployments: fully managed or build your own.

  • Managed Kubernetes: Oracle Cloud Infrastructure Container Engine for Kubernetes is a fully managed, scalable, and highly available service that you can use to deploy your containerized applications to the cloud. Use Container Engine for Kubernetes when your development team wants to reliably build, deploy, and manage cloud native applications. You specify the compute resources that your applications require, and Container Engine for Kubernetes provisions them on Oracle Cloud Infrastructure in an existing tenancy.

  • Build your own: Oracle Cloud Infrastructure supports bare metal and VM deployments. Customers have full access to bare metal servers, and you have full control to build your Docker or Kubernetes environment to your exacting specifications.

Support for Kubernetes and Docker Enterprise also extends to Oracle Linux. Oracle announced the release of Oracle Container Runtime for Docker version 18.03. The Oracle Container Runtime allows you to create and distribute applications across Oracle Linux systems and other operating systems that support Docker. Oracle Container Runtime for Docker consists of the Docker Engine, which packages and runs the applications, and integrates with the Docker Hub, Docker Store, and Oracle Container Registry to share the applications in a software as a service (SaaS) cloud.

Ready for the Details on Storage?

Here's where we are today. That said, you should view this area as still under formation, as we continue to invest.

Managed Kubernetes: Container Engine for Kubernetes and Oracle Cloud Infrastructure Volume Provisioner

In our managed service offering, we install and preconfigure the Volume Provisioner to provide turnkey storage options for container deployments.

Docker Persistence with Volumes

Developers can use local storage or plug-ins from several other storage companies to create a file storage system through an API. Because Docker runs in swarm mode and comes with only a local driver, the plug-ins make it aware of your swarms and match volumes with service tasks. For example, there is such a plug-in for Docker volumes on Oracle Cloud Infrastructure.

The Docker volume plug-in uses the Oracle Cloud Infrastructure File Storage service, which is an enterprise-grade NFSv3 storage service that supports a new level of scale necessary for container environments. The ability to create up to 10,000 snapshots fully enables a DevOps deployment model in the cloud. This plug-in can be installed on Oracle Cloud; we are in the process of open sourcing this driver.

Kubernetes Persistence with the FlexVolume Driver

The Oracle Cloud Infrastructure Volume Provisioner enables the dynamic provisioning of storage resources when running Kubernetes on Oracle Cloud Infrastructure. It uses the FlexVolume driver to bind storage resources to Kubernetes nodes. The Volume Provisioner offers support for Block Volumes today, and we plan to support the File Storage service in the future.  Today, customers that use the File Storage Service can use the standard NFS interface, with dynamic provisioning available in the future.

Customers building their own Kubernetes environment can use the FlexVolume driver, which is available on GitHub.

What's Next?

Kubernetes is moving toward a scalable and extensible model. They introduced the Container Storage Interface (CSI), which is decoupled from core Kubernetes code. CSI will be enabled by default on standard Kubernetes deployments, and it just recently went from beta into production. Oracle intends to support this interface; we will need to write or update volume plug-ins for multiple storage services.

My Request

Don't put off that conversation on storage for containers. It's an important one, and we want to help. If you want to learn more about Oracle Cloud Infrastructure, talk more about storage, or dive into Kubernetes, our cloud landing page is a great place to start. You can also email me directly or reach out on LinkedIn.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha