Table of Contents
What Does Storage Mean?
In Kubernetes, storage refers to how data is preserved beyond the lifecycle of a pod or container. While containers are ephemeral by design, persistent storage ensures that important data such as logs, test results, execution reports, or artifacts remains available after tests finish running. This is critical for maintaining audit trails, debugging failed tests, and ensuring compliance with organizational data retention policies.
Storage in Kubernetes provides the foundation for stateful applications and testing workflows, allowing teams to maintain data integrity across container restarts, pod rescheduling, and cluster updates.
Why Storage Matters in Testkube
Testkube uses Kubernetes-native persistent volumes to store and retrieve test artifacts, logs, and reports. This allows users to analyze test outcomes even after pods are terminated, ensuring consistency and traceability across test runs.
By leveraging persistent storage solutions, Testkube enables teams to maintain a complete history of test executions, compare results over time, and troubleshoot issues with access to historical data. This is especially valuable in continuous integration and continuous delivery (CI/CD) pipelines where test visibility and data persistence are essential for quality assurance.
Storage also supports collaboration across distributed teams by providing centralized access to test results and enabling stakeholders to review execution data without requiring direct access to the Kubernetes cluster.
Common Types of Kubernetes Storage
Understanding the different storage types available in Kubernetes helps teams choose the right solution for their testing and application needs:
EmptyDir – Temporary storage that's deleted when the pod stops. This is useful for scratch space, caching, or temporary data that doesn't need to persist beyond a single pod lifecycle. EmptyDir volumes are created when a pod is assigned to a node and exist only as long as that pod runs on that node.
PersistentVolume (PV) – A cluster-level storage resource provisioned by an administrator. PVs represent physical storage in the cluster and can be backed by various storage systems including cloud provider storage, NFS, iSCSI, or local disks. They exist independently of any pod and have their own lifecycle management.
PersistentVolumeClaim (PVC) – A request for persistent storage by a workload. PVCs allow developers to request storage resources without needing to know the details of the underlying storage infrastructure. This abstraction enables portable application definitions that work across different Kubernetes environments.
ConfigMap / Secret – Used for storing configuration data and sensitive credentials. While not traditional storage volumes, these Kubernetes objects provide a way to inject configuration files, environment variables, and secrets into pods. ConfigMaps handle non-sensitive configuration, while Secrets are designed for sensitive information like passwords, tokens, and keys.
StorageClass – Defines different classes of storage with specific performance characteristics, backup policies, or provisioners. StorageClasses enable dynamic provisioning of storage volumes and allow administrators to offer multiple storage tiers to meet different application requirements.