Custom Pod Autoscaler is a Kubernetes operator that provides custom autoscaling functionality. It runs as a pod in a Kubernetes cluster, periodically gathering metrics (via custom scripts or Kubernetes metrics server), evaluating those metrics to determine desired replica count, and scaling target resources accordingly. The application features a REST API for manual interaction, supports hooks for custom logic at various points in the process, and is designed to work with any language or framework through shell commands or HTTP requests. The architecture follows clean separation of concerns with distinct packages for configuration loading, execution abstraction, metric gathering, evaluation, and scaling logic.
This is the Kubernetes Autoscaler monorepo, containing multiple production-grade autoscaling components for Kubernetes: Cluster Autoscaler (horizontal node scaling), Vertical Pod Autoscaler (vertical pod resource scaling), Addon Resizer (resource adjustment for addons), and Balancer (workload distribution). The architecture is a collection of independent Go applications and libraries, each with its own entry points (main.go) and Kubernetes API extensions. The codebase is heavily multi-cloud, with vendored SDKs for over 15 cloud providers (AWS, GCE, Azure, OCI, Huawei, Alicloud, etc.) and extensive generated client code for custom CRDs. The core autoscaling logic is well-engineered, but the repository is bloated with auto-generated SDKs and boilerplate, leading to moderate technical drift risk. It is actively maintained with frequent commits and CI pipelines.