Carina is a local storage solution for Kubernetes. It was accepted into the Cloud Native Computing Foundation (CNCF) in December 2022 as a sandbox project, and as of the time of this writing it was still at the sandbox level.
Features include disk management, device registration, PVC resizing, scheduling based on capacity, volume topology, PVC autotiering, RAID management, failover, io throttling, and more.
Carina is made up of three components: carina-scheduler, carina-controller, and carina-node.
Carina-scheduler is a schedule plugin that sorts Kubernetes nodes based on the size of the persistent volume, the free disk space of the node, and the node’s IO performance stats.
Carina-controller is the project’s control plane, and it monitors PVC resources and maintains internal logical volume objects.
Carina-node is an agent that runs on each node and manages the local disks.
“Storage systems are complex! There are more and more Kubernetes native storage systems nowadays and stateful applications are shifting into cloud native world, for example, modern databases and middlewares. However, both modern databases and its storage providers try to solve some common problems in their own way. For example, they both deal with data replications and consistency. This introduces a giant waste of both capacity and performance and needs more mantainness effort. And besides that, stateful applications strive to be more peformant, eliminating every possible latency, which is unavoidable for modern distributed storage systems. Enters carina,” Carina’s maintainers wrote on the project’s GitHub page.