<p>I have a scaled deployment with predictable load change depends on time. How can I make my deployment prepared to the load (for example, I want to double pods number every evening from 16:00 to 23:00). Does Kubernetes provides such tool?</p>

<p>I know Kubernetes pods are scaling with <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" rel="nofollow noreferrer">Horizontal Pod Autoscaler</a>, which scales the number of pods based on CPU utilisation or custom metric. But it is reactive approach, I'm looking for proactive.</p>

<p>A quick google search would direct you here: <a href="https://github.com/kubernetes/kubernetes/issues/49931" rel="noreferrer">https://github.com/kubernetes/kubernetes/issues/49931</a></p>

<p>In essence the best solution as of now, is to either run a sidecar container for your pod's main container, which could use the kubernetes api to scale itself up based on a time period with a simple bash script, or write a CRD yourself that reacts to time based events (it is 6pm), something like this one: </p>

<p><a href="https://github.com/amelbakry/kube-schedule-scaler" rel="noreferrer">https://github.com/amelbakry/kube-schedule-scaler</a></p>

<p>which watches annotations with cron-like specs on deployments and reacts accordingly.</p>
