How to change containerd storage location
Why change the storage location of containerd?
In some installations, the default location /var/lib/containerd/ may not have enough disk space to store all containers. If another location has more available space, you can reconfigure containerd to use that location.
Changing the storage location in MicroK8s
In MicroK8s, container data is stored under:
/var/snap/microk8s/common/var/lib/containerd
/var/snap/microk8s/common/run/
You can run df -h to see if the filesystem holding those paths is running low.
To move the storage to a different volume (e.g., /dev/sdc mounted at /mnt), follow these steps:
Edit the containerd configuration file:
`bash sudo nano /var/snap/microk8s/current/args/containerd `
Modify the –root and –state parameters to point to the new storage location:
`text --config ${SNAP_DATA}/args/containerd.toml --root /mnt/var/lib/containerd --state /mnt/run/containerd --address ${SNAP_COMMON}/run/containerd.sock `
Save the file and restart MicroK8s:
`bash microk8s.stop microk8s.start `
Alternative: Using a Persistent Volume
For a single-node MicroK8s setup, an alternative is specifying a host path in the Persistent Volume (PV) YAML definition. This allows pods to store data in a specified location directly:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-volume
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: manual
hostPath:
path: "/mnt/k8s-storage"