# StorageClass & PVC

## StorageClass

### [About](https://kubernetes.io/docs/concepts/storage/storage-classes/)

### Commands

To list the StorageClass:

```bash
kubectl get storageclass
```

To describe a StorageClass:

```bash
kubectl describe storageclass <storageclass-name>
```

To delete a StorageClass:

```bash
kubectl delete storageclass <storageclass-name>
```

## PVC (PersistentVolumeClaim)

### [About](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)

### Commands

To apply and run a PVC configuration:

```bash
kubectl apply -f pvc.yaml
```

To list the PVCs:

```bash
kubectl get pvc
```

### Example

{% code title="pvc.yaml" %}

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
```

{% endcode %}

How to use in Deployment:

{% code title="deployment.yaml" %}

```yaml
...
spec:
  template:
    ...
    spec:
      containers:
        - name: myapp-container
          image: nginx:1.25
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: /etc/pvc
              name: myapp-volume

      volumes:
        - name: myapp-volume   # Could be any arbitratry name
          persistentVolumeClaim:
            claimName: myapp-pvc   # Specific name of the pvc
```

{% endcode %}
