More about Kubernetes Storage
- Azure Kubernetes Service Tutorial: Integrate AKS with ACI
- Kubernetes Workloads with Cloud Volumes ONTAP: Success Stories
- Container Management in the Cloud Age: New Insights from 451 Research
- Using Cloud Manager for Kubernetes Deployment
- Kubernetes Storage: An In-Depth Look
- Monolith vs. Microservices: How Do You Run Your Applications?
- How to Set Up MySQL Kubernetes Deployments
- Kubernetes Shared Storage: The Basics and a Quick Tutorial
- AWS ECS vs Kubernetes: An Unfair Comparison?
- Cloud File Sharing: Kubernetes NFS Provisioning
- AWS Kubernetes Cluster: Quick Setup with EC2 and EKS
- Azure Kubernetes Service: Configuring Persistent Volumes in AKS
- Kubernetes NFS: Two Quick Tutorials
- Kubernetes Persistent Storage: Why, Where and How
- Kubernetes for Developers: A Deep Dive
- Docker Volume Tutorial - Using Trident to Provision Storage
- Kubernetes Volume Cloning with Cloud Volumes ONTAP
- Kubernetes Cloud Storage Efficiency
- Protection for Persistent Data Storage in Kubernetes
- Kubernetes: Dynamic Provisioning with Cloud Volumes ONTAP
- Managing Stateful Applications in Kubernetes
- Kubernetes: Provisioning Persistent Volumes
- An Introduction to Kubernetes
In this article, we discuss the benefits of deploying database storage with Cloud Volumes ONTAP, and demonstrate the way in which MySQL Kubernetes deployments can be set up using NetApp Trident.
Setting up Kubernetes MySQL in Kubernetes with Cloud Volumes ONTAP
Cloud Volumes ONTAP is NetApp’s cloud-based data management platform for AWS and Azure. Building on native cloud compute and AWS and Azure storage resources, Cloud Volumes ONTAP offers a comprehensive set of features for working with data storage, from storage space efficiencies that dramatically reduce cloud storage costs to enterprise-grade data protection. Containerized applications deployed to Kubernetes can benefit from these features by using the NetApp Trident storage provisioner, which enables persistent volumes to be created directly in Cloud Volumes ONTAP.

Cloud Volumes ONTAP HA provides high availability across Availability Zones for Kubernetes persistent volumes, which improves upon the redundancy within an Availability Zone usually provided by iSCSI cloud storage solutions. In the event of a failure, the storage can be seamlessly failed over to provide uninterrupted access for clients and applications actively using the storage.
NetApp SnapMirror® provides efficient, block-level data replication between ONTAP storage services, whether on-premises or in the cloud with AWS or with Azure. This allows for persistent volumes to be mirrored either for DR purposes or archived for long-term backups, to a secondary location that may exist in a different region. After making an initial baseline copy of the source data to the destination, each subsequent synchronization only transfers the changes made to the source data since the last time it ran.
There are many additional advantages to using Cloud Volumes ONTAP for database storage. One of these is storage tiering, which is the ability to automatically and transparently move cold data to low cost object storage, such as Amazon S3 and Azure Blob. On access, the data is moved back to the performance tier for faster access. This feature can be used to make cloud storage more cost effective for large databases that contain a lot of infrequently used, historical data.
Another extremely useful feature is NetApp FlexClone®, which gives DevOps and database administrators the power to instantly clone existing persistent volumes without needing to make an additional copy of the data. This feature has been integrated into NetApp Trident, which allows clones to be created through persistent volume claims. Cloning makes it very easy to set up temporary, writable copies of a database for testing.
How to Set Up MySQL Databases
MySQL is a popular flavor of SQL database. The following provides an example of deploying a single Kubernetes MySQL instance using NetApp Trident.
First, we will create a persistent volume claim for the storage we need. As Trident uses dynamic provisioning, we will specify a storage class, which must have been setup prior to executing this manifest. Each storage class defines the provisioner to be used, along with any other provisioner-specific settings that will determine how the storage is provisioned.
When this claim is used by a pod, Trident will automatically create a 100 GiB high-performance storage volume in Cloud Volumes ONTAP to fulfil the request. This storage class may have been implemented to make use of Amazon EBS Provisioned IOPS disks, for example. A reclaim policy of “retain” has also been specified, which will prevent the persistent volume from being deleted if the pod releases the claim.
We can now bind a pod to this storage by referencing it in our MySQL deployment manifest. As shown below, we simply need to reference our previously defined persistent volume claim and specify where the bound persistent volume should be mounted within our MySQL Kubernetes container.
We can additionally set up test instances of our Kubernetes MySQL database using Trident’s integration with NetApp FlexClone. The following persistent volume claim manifest demonstrates how this can be done.
We simply annotate our claim with the name of the persistent volume claim to clone from, and Trident takes care of the rest by automatically finding the source storage volume in Cloud Volumes ONTAP and performing a NetApp FlexClone operation. The default reclaim policy of delete will ensure that the clone volume is automatically deleted when it is no longer required.
Conclusion
Kubernetes provides a complete solution for running both stateless and stateful applications, with the extensible flexibility to integrate with various cloud storage solutions through its persistent volumes and provisioner paradigms. NetApp Trident makes it possible to integrate Kubernetes with Cloud Volumes ONTAP, giving access to a whole host of data protection and data management benefits that are vital for running database platforms, including MySQL Kubernetes deployments.
