<p>I do have multiple persistent volumes which need to be shrinked to reduce the hosting costs. I already figured out that Kubernetes does not provide such an option. I also tried to clone or the restore the volumes from an snapshot to a new smaller volume - with the same result (<code>requested volume size XXX is less than the size XXX for the source snapshot</code>).</p>
<p>Nevertheless I need a solution or workaround to get this done.</p>
<p>The cluster is deployed with Rancher and the volumes are mounted to a Ceph Cluster. Everything is provided by an external hoster.</p>

<p>Finally I achieved what needed with the following steps (still tricky and manual work):</p>
<ul>
<li>Stop running pod (otherwhise you could not use the volume in the next steps)</li>
<li>Create the a new PVC with the desired capacity (ensure that the spec and label matches the exisitng PVC)</li>
<li>Run this Job <a href="https://github.com/edseymour/pvc-transfer" rel="nofollow noreferrer">https://github.com/edseymour/pvc-transfer</a>
<ul>
<li>In the spec of the <code>job-template.yaml</code> set the source and destination volume</li>
</ul>
</li>
<li>Set the ReclaimPolicy on the new created pv to Retain. This will ensure that the pv won't be deleted after we delete the temp pvc in the next step</li>
<li>Delete the source and destination pvc</li>
<li>Create a new pvc with the old name and the new storage capacity</li>
<li>On the new pv point the claimRef to the new pvc</li>
</ul>
