PD-Orchestrator

Elastic scheduling component set for Kubernetes: Elastic Scaler handles scaling decisions, ResourceScalingGroup handles resource group orchestration and scaling, Tidal provides time-driven tidal strategies

License Helm Version


Project Overview

This project is built around three core components: Elastic Scaler provides general scaling decision capabilities, ResourceScalingGroup provides workload group scaling and resource orchestration capabilities, and Tidal provides time-rule-based tidal scaling capabilities.

Elastic Scaler - Scaling Decision Framework

Elastic Scaler is a general scaling decision framework that adopts a plugin mechanism to support custom algorithm and resource management logic extensions, while simultaneously supporting metric-driven and event-driven scaling semantics.

  • Supports MetricsTrigger (metric-driven) and StateTrigger (event-driven) scaling.
  • Supports custom scaling algorithm plugin development.
  • Supports custom resource plugin development (extensible via ResourceScalingGroup).
  • Compatible with Kubernetes native HPA capabilities.
  • CRD API: elasticscaler.io/v1alpha1.
  • MetricsTrigger supports four metric types: Resource, External, ExternalServer, and Custom (HPA algorithm path does not support ExternalServer).
  • Built-in APA algorithm as the default scaling algorithm; when scalingAlgorithm is left empty, it defaults to APA.
  • StateTrigger associates external resources (e.g., Tidal) via elasticscaler.io/name and elasticscaler.io/namespace labels, synchronizing their status.desiredReplicas.
  • Stabilization strategies such as metric windows, aggregation, and missing values can be configured via Annotations (e.g., elasticscaler.io/metrics.windowSeconds).

ResourceScalingGroup - Resource Group Scaling

RSG targets Kubernetes workload group scaling scenarios, abstracting multiple resources into logical groups for unified orchestration, supporting two core strategies: GroupReplication and InplaceScaling.

  • Manages a set of target resources via the standard CRD ResourceScalingGroup.
  • Supports managing Deployment, StatefulSet, and LeaderWorkerSet.
  • GroupReplication: Replicates, restores, and scales down by group, suitable for full-chain group scaling.
  • InplaceScaling: Links follower replicas proportionally with leader replicas.
  • Exposes the scale sub-resource under GroupReplication, which can be driven by upper-level strategies such as HPA/ElasticScaler/Tidal.

Tidal - Tidal Algorithm

Tidal provides time-driven scaling decision capabilities, generating target replicas at specified time points through the Tidal CRD, with scaling executed uniformly by Elastic Scaler.

  • Provides time-driven scaling decisions via the standard CRD Tidal.
  • Supports combination of multiple time rules and 6-field CRON (including timezone) configuration.
  • When multiple rules conflict at the same time, resolves by the "maximum replicas" strategy.
  • Provides observability information such as desiredReplicas, activeRule, lastTriggerTime, and nextTriggerTime through the Status field.

User Guide

Component Versions

Component Version Description
elastic-scaler latest Decision and trigger controller
resourcescalinggroup latest RSG resource group scaling controller
tidal latest Tidal scheduling controller
pd-orchestrator 0.0.0-latest Three-component integrated deployment

Quick Start

Option 1: Local Helm Deployment

Execute at the repository root directory:

cd charts/pd-orchestrator
helm dependency build
helm install pd-orchestrator .

charts/pd-orchestrator/values.yaml supports enabling/disabling the three components as needed:

elastic-scaler:
  enabled: true
resourcescalinggroup:
  enabled: true
tidal:
  enabled: true

Option 2: OCI Registry Helm Deployment

No need to clone the repository; use the published Chart directly:

helm install pd-orchestrator oci://cr.openfuyao.cn/charts/pd-orchestrator --version 0.0.0-latest

To override default values as needed, append -f values.yaml or --set key=value.

Applicable Scenarios

  • General elastic strategy scenarios: Implement metric-driven and event-driven scaling via elastic-scaler.
  • Multi-resource coordinated scaling scenarios: Uniformly manage a set of target workloads via resourcescalinggroup.
  • Business tidal fluctuation scenarios: Implement scheduled scaling via tidal.