Cloud

Making the choice to adopt Kubernetes likely has you and your team evaluating public cloud services as a hosting option. There are lots of choices, lots of advantages, and lots of caveats to each platform and design choice. One of the often undervalued parts of the Kubernetes design and operations is the impact of storage on workloads and on operations and platform teams.

Although Kubernetes has a unified approach to computing for containerized workloads, cloud storage options for Kubernetes can vary in features, capabilities, costs, and constraints. Cloud storage enables organizations and businesses to store, manage and access big data from anywhere in the world. As cloud technology and infrastructures grow, various cloud storage providers offer their cloud storage solutions with exclusive features and pricing plans.

Evaluating the Big 3 Public Cloud Offerings

Amazon Azure google

Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP) are the most popular cloud infrastructure and storage providers, each offering a unique set of features and pricing plans. This article serves as a comparison guide for users seeking to understand the nuances between AWS vs Azure vs Google Cloud.

 

AWS is widely recognized as the market leader, offering a wide range of services, including object, block, and file storage. Azure is often known for its enterprise-focused integrations, security and compliance features and offers a variety of storage services, including disk storage, file storage, queue storage, table storage, and blob storage. Meanwhile, GCP is known for its robust data analysis capabilities and offers various storage services, including cloud storage, Cloud SQL, and cloud Spanner. All of the features between AWS vs GCP vs Azure play into software and hardware development, and developers should know the possibilities.

When it comes to Kubernetes, the open-source container orchestration system, each cloud provider offers various hosting options and also many storage offerings that have Kubernetes-specific requirements and capabilities. Kubernetes has the ability to manage storage resources directly or can also extend to integrated storage solutions that can be purpose-built for certain applications.

When comparing cloud providers, it is crucial to learn about Kubernetes storage in the three most popular cloud platforms Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).

Kubernetes Storage at a Glance

Kubernetes supports two types of storage; ephemeral storage and persistent storage. Ephemeral storage is used for temporary data that does not need to be kept after the pod is deleted, e.g., Logs and caches.

In contrast, persistent storage is used for data that should remain intact after the pod is removed, including file systems and databases. Kubernetes facilitates persistent storage by implementing Persistent Volumes (PVs) and Persistent Volume Claims (PVCs). PVs are the underlying storage resources provisioned by the cluster manager, while PVCs are used by end users to request and consume storage resources.

When we consider how Kubernetes interacts with cloud storage, we can think of it as a model for efficiently and securely managing data in a cloud-native application environment. It’s worthwhile to begin comparing cloud providers and the various tools they offer to handle this.

Microsoft Azure vs Amazon AWS vs Google Cloud: Kubernetes Cloud Storage Compared

AWS provides the ability to manage Kubernetes storage using Amazon Elastic Block Store (EBS) volumes. EBS is a block storage service that can be used to create and attach storage

volumes to EC2 instances. In Kubernetes, EBS volumes are used as PVs and are provisioned using the Kubernetes AWS EBS CSI Provisioner.

The provisioner creates and deletes EBS volumes based on the storage requirements of the PVCs. Additionally, EBS can be used in conjunction with Kubernetes StatefulSets, allowing you to establish unique and stable network identities for pods to simplify memory management for stateful applications.

In Azure, you can manage Kubernetes’ storage using Azure disks. Azure Disks is a managed disk service that can create and attach storage volumes to virtual machines (VMs). In Kubernetes, you can also use Azure disks as PVs and provision through the Kubernetes Azure Disk Provider. The provider automatically creates and deletes Azure disks based on storage requirements from PVCs.

On GCP, you can manage Kubernetes storage using GCP persistent disks. GCP Persistent Disk is a block storage service that you can use to create and attach storage volumes to virtual machines. Kubernetes can use GCP persistent disks as PVs and the Kubernetes’ GCP Persistent Disk Provisioner provisions them.

The provisioner creates and removes GCP persistent disks based on storage requirements from PVCs. In addition to storage providers and solutions, each cloud provider also offers additional storage features and services used in conjunction with Kubernetes.

There are more general storage options for some shared file hosting such as Amazon Elastic File System (EFS), a fully managed file storage service that can be used to provide shared file storage across multiple pods and nodes. Azure offers a similar option with Azure Files, a fully managed file storage service that can be used to provide shared file storage across multiple pods and nodes. GCP offers Cloud Filestore, which is a fully managed file storage service that can provide this type of shared file storage across multiple pods and nodes.

When comparing cloud providers, the storage options and Kubernetes offerings they provide can significantly affect application reliability and performance. Thus, selecting the right cloud partner is crucial for application success and customer satisfaction.

It is also essential to consider the capabilities and limitations of each cloud provider’s storage offering regarding availability, performance, durability, and scalability. Additionally, understanding how Kubernetes storage interacts with other cloud services and technologies can aid in the design and operation of your applications and systems.

Top Features Enterprises Want While Using Kubernetes Cloud Storage

If we compare AWS, GCP, and Azure, they all have their strengths and weaknesses, which become more pronounced depending on the specific demands of your Kubernetes workloads. When it comes to managing storage in a Kubernetes environment, there are several key capabilities that organizations are often looking for.

These include:

Performance

High-performance storage solutions that handle large amounts of data and support high-performance workloads are critical for businesses. These are important for apps that require real-time access to data, such as databases and analytical platforms.

Consistency

Enterprises need storage solutions that provide strong data consistency, ensuring that data is always available and accessible to applications. These solutions are important to maintain the reliability and integrity of business-critical applications.

Low Cost of Operation

Organizations are always looking for easy-to-manage and cost-effective cloud storage solutions. These include solutions that can be deployed and scaled automatically, in addition to  those that can be cost-optimized based on the specific storage needs of the application.

Data Security

Organizations are in search of storage solutions that can provide strong data security mechanisms to protect sensitive data and ensure compliance with industry regulations.

Scalability

Businesses need storage solutions that can easily scale up or down as per the changing needs of their applications and workloads. This includes both the growth by capacity and programmability for also scaling operations and management processes.

Multi-cloud Support

Enterprises are looking for solutions that can easily run on multiple cloud providers so they can take advantage of the best offerings from each provider and avoid vendor lock-in. Multi-cloud is often acquired as a deployment pattern because of integration with other platforms or even acquiring another company or technology which is already hosted somewhere other than your primary cloud provider.

Disaster Recovery

In the event of a disaster, businesses need to have storage solutions that offer disaster recovery capabilities that ensure data and applications can be recovered. This is both a technical and a business challenge that requires a lot of design thinking to evaluate the optimal solution.

Monitoring and Management

Enterprises need solutions that provide monitoring and management capabilities to ensure storage resources are being used efficiently and to quickly identify and resolve problems. More and more focus is being placed on monitoring and observability to get better insights into total application health and performance.

The comparison of AWS, Azure, and Google Cloud is essential to understand which platforms can most effectively cater to your specific business requirements and data needs.

Deploying Kubernetes Workloads with Storage on AWS, Azure, and GCP

When we review Azure, AWS, and GCP in comparison to each other, we see that each offers unique features and different levels of performance, scalability, and cost-effectiveness. Deploying Kubernetes workloads with storage from any vendor can be done with multiple storage solutions across all three of the major cloud platforms.

Deploying Kubernetes workloads with storage on AWS

Features

EBS provides block storage for workloads with high performance and IOPS requirements, while EFS provides file storage for workloads that need to share files across multiple pods. With Kubernetes, you can choose to integrate EBS and EFS as part of your underlying storage.

Limitations

EBS and EFS are only available in the AWS Region, and within that, only available to the Availability Zone in which they were created. This limits you to only using storage volumes within the same VPC and cannot be designed for multi-AZ deployments. This means you must configure locally, and repeat that configuration across all regions for your Kubernetes clusters. You can write some automation scripts to do this which can speed the process but requires keeping scripts up to date with changing features and parameters over time.

Another important challenge is that you must configure and deploy different CSI plugins for each of the EBS and EFS storage platforms.

Cost Impact

The cost of using EBS and EFS depends on the type and amount of storage used, as well as the number of IOPS and throughput required. It’s challenging to know upfront what your I/O and throughput requirements are which often leads to costly overprovisioning as a way to attempt to mitigate under-sizing the storage.

AWS also charges for data transfer, which can increase the overall cost of operating your Kubernetes cloud solutions. It adds both cost and complexity when you want to increase availability and protection of your data while also trying to meet performance and IOPS requirements.

Deploying Kubernetes workloads with storage on Azure
Features

In the Microsoft Azure cloud platform, Azure Disk and Azure Files are the solutions that are responsible for managing storage for your Kubernetes workloads. Azure Disk offers block storage while Azure Files provides file storage for workloads that need to share files across multiple pods.

Limitations

Azure Disk and Azure Files are only available in the Azure region in which they are created and require complex configuration. Automation scripting can help with deployment but also needs skills and continuous maintenance to ensure provisioning processes match parameters and features.

Cost Impact

The cost of using Azure Disk and Azure Files depends on the type and amount of storage used, as well as the amount of IOPS and throughput required. Azure also charges for data transfer and data management, which can increase the overall cost as more data moves in and out of your containerized applications.

Deploying Kubernetes workloads with storage on GCP
Features

In GCP, the GCP Persistent Disk and Cloud Filestore are the primary storage solutions for Kubernetes workloads. GCP Persistent Disk provides block storage for workloads with high IOPS and performance requirements, while Cloud Filestore provides file storage for workloads that need to share files across multiple pods.

Limitations

GCP Persistent Disks and Cloud Filestore storage are only available in the GCP region in which they are created and, like our solutions mentioned above, requires complex configuration and knowing how to set parameters either manually or with your own scripted processes.

Cost Impact

The cost impact of storage depends on factors such as the type of storage and the required number of IOPS, and throughput. GCP also charges for data transfer, which can increase the overall cost of using these storage solutions. One of the interesting challenges with GCP is the way costs are adjusted for discounting.

Scaling Kubernetes Storage on AWS, Azure, and GCP

When building a robust Kubernetes environment, developers must consider the benefits and drawbacks of using GCP, Azure, or AWS when comparing cloud providers. After all, you can scale Kubernetes storage with any cloud storage provider by using different storage solutions from cloud providers for Kubernetes workloads.

Scaling Kubernetes Storage on AWS
Features

In AWS, you can easily scale up or down the storage volume size or performance of EBS and EFS, the two cloud storage types for K8s workloads. Scaling between storage tiers does affect the amount of performance and read/write speeds you can achieve, but some changes may be unidirectional (e.g. you can only scale up) which needs to be accounted for in Day 2 operations.

Limitations

AWS limits EBS and EFS to the AWS Region and AZ that you create them in and only allows them to be used within the same VPC. This means you’re bound to locality for the Kubernetes application and you need to account for that in your application design. Multi-AZ implementations cannot be done with the built-in storage providers.

Cost Impact

The cost of scaling EBS and EFS storage depends on the size and performance of the storage volume, the required amount of data transfer and IOPS. There is also data throughput to the compute node that affects the price.

Scaling Kubernetes Storage on Azure
Features

Azure offers Azure Disk and Azure Files cloud storage for K8s workloads that can be easily scaled up or down by changing the size or performance of the storage volume. In addition, it can also integrate both solutions with the dynamic provisioning feature of Kubernetes, which allows automatic scaling of storage resources based on workload demands.

Limitations

Azure Disk and Azure Files are only available in the Azure region where they are created which affects your data locality and availability.

Cost Impact

The cost of scaling Azure Disk and Azure Files storage depends on the size and performance of the storage volume, the amount of data transfer and IOPS required. Azure offers flexibility for performance and throughput with multiple storage tiers which can be adjusted by scaling up, and sometimes down, to match workload needs.

Scaling Kubernetes Storage on GCP
Features

In GCP, you can easily scale up and down the Persistent Disk and Cloud Filestore cloud storage by changing the size or performance of the storage volume to manage K8s workloads. There is integration with the dynamic provisioning feature of Kubernetes, which allows you to automatically scale storage resources based on workload requirements. Google seems to be more Kubernetes-oriented since they were the originators of the open source project but a distinct advantage with GKE on GCP is the compute layer and connection to adjacent services.

Limitations

GCP Persistent Disk and Cloud Filestore are only available in the GCP region where they are created. You can see this is a common constraint across all providers which must be accounted for in workload placement and application availability planning.

Cost Impact

The cost of scaling GCP Persistent Disk and Cloud Filestore storage depends on the size and performance of the storage volume, as well as the amount of data transfer and IOPS required. GCP is unique in how it does reserved pricing over time based on usage rather than you selecting reserved pricing upfront for fixed terms.

Conclusion

Having effectively compared GCP, AWS, and Azure, you may have recognized the need to diversify your providers for your workload. However, managing Kubernetes storage in the cloud can be a complex task, especially when working with multiple cloud providers. You need to understand the requirements for your application workloads and the capabilities of each cloud provider. When scaling K8s storage, each vendor must have their own set of capabilities, limitations, and cost implications. Your application and operational requirements will heavily influence which storage options you choose.

Be careful not to go into it with guesswork as the first approach. It’s ideal for you to have metrics and some profiling of the application to help you anticipate what options you need to select for I/O, throughput, and scalability.

Consistency is another important consideration when designing and operating K8s cloud storage. A consistent cloud-native storage solution across multiple cloud providers can simplify management and ensure your applications run optimally. You need to choose the best one that fulfills your requirements by evaluating different available options.. It is  always a good idea to monitor, understand, and optimize your expenses, as disk space can consume a significant portion of your budget.

Multi-cloud K8s can be complex. Successful deployment and operations require a keen understanding of your workload requirements and proper planning and management Day 2 and beyond.

 

Learn More about:

Share
Subscribe for Updates

About Us
Portworx is the leader in cloud native storage for containers.

Guest

Guest author

link
Blog Placeholder
January 7, 2020 Lightboard
Lightboard Session: Data Locality with Stork (Storage Orchestrator for Kubernetes)
Ryan Wallner
Ryan Wallner
link
Twitter
April 7, 2020 Product Announcements
Announcing Portworx Essentials: The #1 Kubernetes storage platform for any app
Michael Ferranti
Michael Ferranti