> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ankra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Kubernetes Storage

> Manage PersistentVolumes, PersistentVolumeClaims, StorageClasses, and CSI resources in Ankra

<Note>
  The Storage section provides visibility into persistent storage resources in your Kubernetes cluster.
</Note>

## Overview

Kubernetes storage resources manage persistent data:

* **PersistentVolumes (PV)** - Cluster-wide storage resources
* **PersistentVolumeClaims (PVC)** - Requests for storage by pods
* **StorageClasses** - Define storage provisioners and policies
* **CSI Drivers** - Container Storage Interface implementations
* **CSI Nodes** - Node-level CSI capabilities
* **Volume Attachments** - Track volume attachments to nodes

***

## Accessing Storage Resources

Navigate to your cluster and click **Kubernetes** in the sidebar. Storage resources include:

| Resource               | Path                                |
| ---------------------- | ----------------------------------- |
| PersistentVolumes      | Kubernetes → PersistentVolumes      |
| PersistentVolumeClaims | Kubernetes → PersistentVolumeClaims |
| StorageClasses         | Kubernetes → StorageClasses         |
| CSI Drivers            | Kubernetes → CSI Drivers            |
| CSI Nodes              | Kubernetes → CSI Nodes              |

***

## PersistentVolumes (PV)

PersistentVolumes are cluster-level storage resources.

### Viewing PersistentVolumes

| Column         | Description                        |
| -------------- | ---------------------------------- |
| Name           | Volume name                        |
| Capacity       | Storage size                       |
| Access Modes   | RWO, ROX, RWX                      |
| Reclaim Policy | Retain, Delete, Recycle            |
| Status         | Available, Bound, Released, Failed |
| Claim          | Bound PVC (if any)                 |
| StorageClass   | Associated storage class           |
| Age            | Time since creation                |

### Access Modes

| Mode    | Description                               |
| ------- | ----------------------------------------- |
| **RWO** | ReadWriteOnce - single node read-write    |
| **ROX** | ReadOnlyMany - multiple nodes read-only   |
| **RWX** | ReadWriteMany - multiple nodes read-write |

### Reclaim Policies

| Policy      | Description                    |
| ----------- | ------------------------------ |
| **Retain**  | Keep data after PVC deletion   |
| **Delete**  | Delete underlying storage      |
| **Recycle** | Basic scrub (`rm -rf /data/*`) |

### PV Details

Click a PV to view:

* **Capacity** - Storage size
* **Volume Mode** - Filesystem or Block
* **Access Modes** - Supported access patterns
* **Reclaim Policy** - What happens when released
* **Storage Class** - Provisioner configuration
* **Claim Reference** - Bound PVC details
* **Source** - Underlying storage (CSI, NFS, etc.)

***

## PersistentVolumeClaims (PVC)

PVCs are requests for storage by pods.

### Viewing PersistentVolumeClaims

| Column       | Description              |
| ------------ | ------------------------ |
| Name         | Claim name               |
| Namespace    | Kubernetes namespace     |
| Status       | Pending, Bound, Lost     |
| Volume       | Bound PV name            |
| Capacity     | Requested/actual storage |
| Access Modes | Requested access modes   |
| StorageClass | Storage class used       |
| Age          | Time since creation      |

### PVC States

| Status      | Description                   |
| ----------- | ----------------------------- |
| **Pending** | Waiting for a matching PV     |
| **Bound**   | Successfully bound to a PV    |
| **Lost**    | PV was deleted or unavailable |

### PVC Details

Click a PVC to view:

* **Request** - Requested storage size
* **Capacity** - Actual provisioned size
* **Access Modes** - Granted access modes
* **Volume Name** - Bound PersistentVolume
* **Storage Class** - Provisioner used
* **Volume Mode** - Filesystem or Block
* **Pods** - Pods using this claim

### Troubleshooting Pending PVCs

1. Check if a matching StorageClass exists
2. Verify storage class is set to provision dynamically
3. Check cloud provider quotas and limits
4. Review PVC events for errors

***

## StorageClasses

StorageClasses define how storage is provisioned.

### Viewing StorageClasses

| Column              | Description                       |
| ------------------- | --------------------------------- |
| Name                | Class name                        |
| Provisioner         | CSI driver or provisioner         |
| Reclaim Policy      | Default reclaim policy            |
| Volume Binding Mode | Immediate or WaitForFirstConsumer |
| Default             | Whether this is the default class |

### Volume Binding Modes

| Mode                     | Description                  |
| ------------------------ | ---------------------------- |
| **Immediate**            | Provision volume immediately |
| **WaitForFirstConsumer** | Wait until pod is scheduled  |

### StorageClass Details

* **Provisioner** - CSI driver name
* **Parameters** - Provisioner-specific settings
* **Reclaim Policy** - Default for created PVs
* **Allow Volume Expansion** - Whether resize is supported
* **Mount Options** - Default mount options

### Common Provisioners

| Provisioner                | Provider               |
| -------------------------- | ---------------------- |
| `kubernetes.io/aws-ebs`    | AWS EBS                |
| `kubernetes.io/gce-pd`     | Google Persistent Disk |
| `kubernetes.io/azure-disk` | Azure Disk             |
| `ebs.csi.aws.com`          | AWS EBS CSI            |
| `pd.csi.storage.gke.io`    | GKE CSI                |

***

## CSI Resources

### CSI Drivers

CSI Drivers are storage plugins that implement the Container Storage Interface.

| Column            | Description                         |
| ----------------- | ----------------------------------- |
| Name              | Driver name                         |
| Attach Required   | Whether attach operation is needed  |
| Pod Info On Mount | Whether pod info is passed on mount |

### CSI Nodes

CSI Nodes show storage capabilities per node.

| Column      | Description                |
| ----------- | -------------------------- |
| Name        | Node name                  |
| Drivers     | Installed CSI drivers      |
| Allocatable | Maximum volumes per driver |

***

## Common Tasks

### Finding Which Pod Uses a PVC

1. Navigate to **PersistentVolumeClaims**
2. Click on the PVC
3. View the **Pods** section to see which pods have mounted this volume

### Expanding a Volume

1. Navigate to **PersistentVolumeClaims**
2. Click on the PVC
3. Check if the StorageClass allows expansion
4. Edit the PVC to request more storage
5. The filesystem will be expanded (may require pod restart)

### Troubleshooting Storage Issues

1. **PVC Pending:**
   * Check StorageClass exists and is valid
   * Verify provisioner is running
   * Check cloud provider quotas
   * Review events for error messages

2. **Mount Failures:**
   * Check node can access the storage
   * Verify CSI driver is installed on the node
   * Check for conflicting access modes

3. **Data Loss:**
   * Check reclaim policy before deleting PVCs
   * Use `Retain` policy for important data
   * Set up backup solutions

***

## Tips

<Tip>
  **WaitForFirstConsumer:** Use this binding mode to ensure volumes are provisioned in the same zone as your pod.
</Tip>

<Tip>
  **Storage Class Defaults:** Set a default StorageClass so PVCs without explicit class still work.
</Tip>

<Tip>
  **Reclaim Policy:** Change to `Retain` for production data to prevent accidental deletion.
</Tip>

***

Still have questions? [Join our Slack community](https://join.slack.com/t/ankra-community/shared_invite/zt-3a5rem8f8-cUho4epX2MoLT83bFf~VSA) and we'll help out.
