tortoise
tortoise copied to clipboard
Tortoise: Shell-Shockingly-Good Kubernetes Autoscaling
#### What this PR does / why we need it: Create CRD for scheduledscaling #### Which issue(s) this PR fixes: https://github.com/mercari/tortoise/issues/34 Fixes # #### Special notes for your reviewer:
pubsub/batch workers don't receive the traffic always. They're busy sometimes and free for other periods. Given Tortoise generates the recommendation based on VPA's recommendation and VPA takes a recent usage...
### What happened seemingly When Tortoise is configured to vertically scale up/down resource, Tortoise basically calculates recommended resource requests by `{VPA's recommendation} *1.1` (1.1 is configurable through [`BufferRatioOnVerticalResource`](https://github.com/mercari/tortoise/blob/main/pkg/config/config.go#L193-L196)) Also, Tortoise...
Tortoise can work on the scaling of Pods under deployments. https://github.com/mercari/tortoise/blob/main/api/v1alpha1/tortoise_types.go#L121 But, we want to use it for Pods managed by other resources as well, which implements `/scale` subresource
Sometimes we can predict the increase of the resource consumption before it actually happens. (like TV, push notification on app, etc. Or load testing in a upstream service in dev.)...
allow Emergency mode only when TortoisePhase is Working.
https://github.com/mercari/tortoise/blob/main/pkg/recommender/recommender.go#L185-L196 To prevent the deployment from creating too many but too small replicas, Tortoise has the feature that when the replica number goes higher than `30` (this threshold is configurable...
Tortoise is using a rolling update for updating Pods with a new request. But, it takes time to replace all the Pods. Meanwhile maybe we shouldn't make any recommendation.
Scaling down is limited so that it happens once an hour at max. But, when tortoise suggests scaling up, we always immediately try to scale up Pods for safety for...
istio-proxy could be added twice in `ContainerResourceRequests` if the deployment has the sidecar injection annotation and it's using the custom injection: https://istio.io/latest/docs/setup/additional-setup/sidecar-injection/#customizing-injection ``` ... template: metadata: annotations: sidecar.istio.io/inject: "true" sidecar.istio.io/proxyCPU:...