Skip to content

Latest commit

 

History

History
178 lines (161 loc) · 8.57 KB

CHANGELOG.md

File metadata and controls

178 lines (161 loc) · 8.57 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[v0.12.0] - 2023-01-15

Changed

  • See the migration guide from v0.11.2 here.
  • BREAKING CHANGE PHPA spec upgraded from autoscaling/v2beta2 to autoscaling/v2 for the following definitions:
    • CrossVersionObjectReference in the scaleTargetRef field.
    • MetricSpec in the metrics field.
    • MetricStatus in the currentMetrics field.
  • Upgraded to k8shorizmetrics v2.0.0.
  • Upgraded from autoscaling/v2beta2 to autoscaling/v2.
  • Upgraded to Go v1.19.

Removed

  • BREAKING CHANGE Removed downscaleStabilization, replaced with behavior, scaleDown, stabilizationWindowSeconds.

Added

v0.11.2 - 2022-11-25

Fixed

  • Bug that would display a statsmodels error when using Holt-Winters and having too few observations (less than 2 * seasonal periods).

v0.11.1 - 2022-07-23

Fixed

  • Bug that caused the autoscaler to fail to scale every time, due to invalid K8s GVR resource fed to the scaling client.

v0.11.0 - 2022-07-23

Changed

  • See the migration guide from v0.10.0 here.
  • BREAKING CHANGE: Major rewrite converting this project from a Custom Pod Autoscaler to have its own dedicated CRD and operator.
    • Configuration and deployment has changed completely, no longer need to install the Custom Pod Autoscaler Operator, instead you need to install the Predictive Horizontal Pod Autoscaler as an operator.
    • No longer deployed as CustomPodAutoscaler custom resources, now deployed as PredictiveHorizontalPodAutoscaler custom resources.
  • BREAKING CHANGES: Several configuration options renamed for clarity.
    • LinearModel -> storedValues renamed to LinearModel -> historySize
    • Model -> perInterval renamed to Model -> perSyncPeriod
  • BREAKING CHANGES: perSyncPeriod behaviour changed slightly, now it will no longer calculate the prediction, but it will still update the replica history available to make a prediction with and prune the replica history if needed.
  • Holt-Winters runtime hooks format changed:
    • evaluations renamed to replicaHistory.
    • Format change for replicaHistory, now in the format [{"time": "<timestamp>", "replicas": <replica count>}].
  • Upgrade to Go v1.18.
  • No longer SQLite based storage, instead using Kubernetes configmaps which give persistent storage by default with resiliency when the autoscaler operator restarts.

Removed

v0.10.0 - 2022-05-14

Changed

  • Removed dependency on jthomperoo/horizontal-pod-autoscaler in favour of jthomperoo/k8shorizmetrics.
  • Bump jthomperoo/custom-pod-autoscaler to v2.6.0.
  • Upgrade to Go v1.17.

v0.9.0 - 2021-12-28

Added

  • Support for argoproj.io/v1alpha1 Rollout resource.

Changed

  • Bump jthomperoo/custom-pod-autoscaler to v2.3.0
  • Bump jthomperoo/horizontal-pod-autoscaler to v0.8.0

v0.8.0 - 2021-08-15

Changed

  • Updated to Custom Pod Autoscaler v2.2.0.
  • Updated to Horizontal Pod Autoscaler CPA v0.7.0.

Fixed

  • Linear regression no longer fails on first run.

v0.7.0 - 2021-04-05

Added

  • Holt Winters values can now be fetched at runtime, rather than simply being hardcoded.

Fixed

  • Fixed slow shutdown of PHPA due to ignoring SIGTERM from K8s.

Changed

  • Switched from Golang to Python for calculating statistical predictions for Linear Regression and Holt-Winters.
  • Holt-Winters now calculated using statsmodels, opening up statsmodels configuration options for tuning.
    • trend - Either add/additive or mul/multiplicative, defines the method for the trend element.
    • seasonal - Either add/additive or mul/multiplicative, defines the method for the seasonal element.
    • dampedTrend - Boolean value to determine if the trend should be damped.
    • initializationMethod - Which initialization method to use, see statsmodels for details, either estimated, heuristic, known, or legacy-heuristic
    • initialLevel - The initial level value, required if initializationMethod is known.
    • initialTrend - The initial trend value, required if initializationMethod is known.
    • initialSeasonal - The initial seasonal value, required if initializationMethod is known.
  • Holt-Winters seasonLength variable renamed to seasonalPeriods.
  • Holt-Winters method split into trend and seasonal variables.
  • Switched docs theme to material theme.

v0.6.0 - 2020-08-31

Changed

  • Update Custom Pod Autoscaler version to v1.0.0.
  • Update Horizontal Pod Autoscaler version to v0.6.0.

v0.5.0 - 2020-03-27

Changed

  • Evaluation from HPA now included in list of predicted replica counts, rather than being treated separately at the end. Now included in mean, median, minimum calculations rather than just the maximum calculation.

v0.4.0 - 2020-03-10

Added

  • Documentation as code; configuration reference.
  • New decision type median, returns the median average of the predictions.
  • JSON support for configuration options.
  • Can now configure tolerance, initialReadinessDelay and initializationPeriod that are available to be configured in the K8s HPA.
  • Default downscaleStabilization set to 300 (5 minutes) to match K8s HPA.

Changed

  • Metric specs now defined in predictiveConfig rather than in their own section.
  • Update Custom Pod Autoscaler version to v0.11.0.
  • Update Horizontal Pod Autoscaler version to v0.5.0.
  • Default interval set to 15000 (15 seconds) to match K8s HPA.
  • Default minReplicas set to 1 to match K8s HPA.
  • Default maxReplicas set to 10 to match K8s HPA.

v0.3.0 - 2020-02-17

Added

  • Multiplicative method for Holt-Winters time series prediction.

Changed

  • Update Custom Pod Autoscaler version to v0.10.0.
  • Update Horizontal Pod Autoscaler version to v0.4.0.
  • Holt-Winters no longer additive by default, must specify a method, either additive or multiplicative in the Holt-Winters configuration.

v0.2.0 - 2019-12-19

Added

  • Holt-Winters time series based prediction model.

v0.1.0 - 2019-12-9

Added

  • Added the ability to use Linear Regression models to predict future scaling.