Skip to content

Conversation

@laik
Copy link

@laik laik commented Nov 10, 2025

Title: Introduce PVC Manager for High-Performance LocalPV Provisioning

Description:

This PR introduces a new architecture for the OpenEBS Dynamic LocalPV Provisioner, addressing performance bottlenecks identified during stress testing (see openebs/openebs#4050). The core change replaces the traditional helper pod mechanism with a DaemonSet-based PVC Manager service that performs volume operations via direct HTTP API calls.

Key Changes:

  1. New PVC Manager Component:

    • A new pvc-manager binary is added (cmd/pvc-manager/) which runs as a DaemonSet on each node.
    • It exposes HTTP endpoints for creating directories, applying quotas, and deleting volumes.
    • This eliminates the overhead of creating and terminating ephemeral helper pods for each operation.
  2. Provisioner Integration:

    • The main provisioner logic (cmd/provisioner-localpv/) is updated to conditionally use the new PVC Manager.
    • A new client (cmd/provisioner-localpv/app/pvc_manager_client.go) handles communication with the PVC Manager service.
    • New helper functions (cmd/provisioner-localpv/app/helper_pvc_manager.go) orchestrate the HTTP calls.
    • Environment variables OPENEBS_IO_ENABLE_PVC_MANAGER (default true) and OPENEBS_IO_PVC_MANAGER_PORT (default 8080) control this behavior.
  3. Deployment Updates:

    • New Kubernetes manifests are added for deploying the PVC Manager DaemonSet and its associated RBAC (deploy/kubectl/pvc-manager-*, deploy/helm/charts/templates/pvc-manager-*).
    • Documentation is provided in design/pvc-manager-architecture.md and deploy/helm/charts/PVC-MANAGER-INTEGRATION.md.

Benefits:

  • Significantly Improved Performance: As highlighted in issue #4050, this change drastically reduces PVC binding times, especially under load, by removing the pod creation bottleneck.
  • Reduced API Server Load: Fewer transient pod objects are created and managed by the Kubernetes API server.
  • Enhanced Reliability: A long-running service is generally more predictable than ephemeral pods.
  • Better Resource Utilization: The DaemonSet model provides a more consistent resource footprint.

This new architecture provides a substantial performance improvement for LocalPV provisioning, directly addressing the concerns raised in issue #4050. Backward compatibility with the helper pod mode is maintained via the OPENEBS_IO_ENABLE_PVC_MANAGER environment variable.

@laik laik requested a review from a team as a code owner November 10, 2025 15:19
@niladrih
Copy link
Member

Hi @laik. I'm yet to review your PR. Just letting you know that we require DCO signatures on all commits. You might have already noticed the failing CI job.

@laik
Copy link
Author

laik commented Nov 12, 2025

Hi @laik. I'm yet to review your PR. Just letting you know that we require DCO signatures on all commits. You might have already noticed the failing CI job.

Yes, I saw it, it was added

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants