Skip to content

Commit

Permalink
Add decision guide for default storage class in EKS clusters
Browse files Browse the repository at this point in the history
  • Loading branch information
milldr committed Oct 21, 2024
1 parent 353cc94 commit f51ba78
Showing 1 changed file with 73 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
title: "Decide on Default Storage Class for EKS Clusters"
sidebar_label: "Default Storage Class"
description: Determine the default storage class for Kubernetes EKS clusters
---
import Intro from '@site/src/components/Intro';
import KeyPoints from '@site/src/components/KeyPoints';

<Intro>
When provisioning EKS (Kubernetes) clusters, selecting the appropriate default storage class is crucial for ensuring optimal performance, scalability, and cost-efficiency of persistent storage for workloads.
</Intro>

## Default Storage Class Options

We need to decide between **Amazon EFS (Elastic File System)** and **Amazon EBS (Elastic Block Store)** as the default storage class for our EKS clusters. Historically, **EFS** has been the recommended option, but there is a growing preference for **EBS** for customers.

### Amazon EFS

**Amazon EFS** provides a scalable, fully managed elastic NFS file system for use with AWS Cloud services and on-premises resources.

#### Pros:
- **Scalability:** Automatically scales storage capacity as needed without manual intervention.
- **Shared Access:** Allows multiple pods to access the same file system concurrently, facilitating shared storage scenarios.
- **Managed Service:** Fully managed by AWS, reducing operational overhead for maintenance and scaling.
- **NFS Protocol Support:** Compatible with applications requiring NFS (Network File System) access.

#### Cons:
- **Performance:** Generally offers lower performance compared to EBS, especially for high IOPS (Input/Output Operations Per Second) requirements.
- **Cost:** Can be more expensive for certain usage patterns due to its pricing structure.
- **Latency:** Higher latency compared to EBS, which may impact performance-sensitive applications.

### Amazon EBS

**Amazon EBS** provides high-performance block storage volumes for use with Amazon EC2 instances, suitable for a wide range of workloads.

#### Pros:
- **Performance:** Offers high IOPS and low latency, making it ideal for performance-critical applications.
- **Cost-Effective:** Potentially lower costs for specific storage types and usage scenarios.
- **Integration:** Well-integrated with Kubernetes through the EBS CSI (Container Storage Interface) driver, facilitating seamless provisioning and management.
- **Snapshot and Backup:** Supports snapshotting for data backup, recovery, and cloning.

#### Cons:
- **Single-Attach Limitation:** EBS volumes are typically attached to a single node at a time, limiting shared access across multiple pods.
- **Scalability:** Requires manual provisioning and management of storage capacity, which can introduce operational complexity.
- **Availability Zones:** EBS volumes are confined to a single Availability Zone, which may affect high availability and disaster recovery strategies.

## Decision

**Both Amazon EFS and Amazon EBS are excellent choices for the default storage class in EKS clusters, depending on specific use cases and requirements.**

- **Choose Amazon EFS** if your applications require:
- Shared access to the same file system across multiple pods.
- Automatic scaling of storage without manual intervention.
- Compatibility with NFS protocols.

- **Choose Amazon EBS** if your applications demand:
- High IOPS and low latency for performance-critical workloads.
- Cost-effective storage solutions for specific usage patterns.
- Advanced features like snapshotting and seamless integration with Kubernetes.

This approach allows teams to select the most appropriate storage option based on the nature of their workloads, performance requirements, and operational considerations.

## Consequences

- **Flexibility:** Offering both EFS and EBS as options provides the flexibility to choose the storage solution that best fits the application's needs.
- **Complexity:** Managing multiple storage classes may introduce additional complexity in provisioning and maintaining storage resources.
- **Documentation:** Clear guidelines and best practices will be needed to help teams decide which storage class to use for different scenarios.
- **Resource Allocation:** Teams may need to allocate resources for evaluating and monitoring both storage options to ensure optimal usage and performance.
- **Potential Training:** Developers and operations teams might require training to effectively utilize and manage both EFS and EBS within their Kubernetes deployments.

## Recommendations

Either Amazon EFS and Amazon EBS as excellent choices as the default storage class. Choose the appropriate storage class based on the specific requirements of your applications and workloads.

0 comments on commit f51ba78

Please sign in to comment.