nice-hairdresser-45030
12/05/2025, 2:31 PMinject-finalizer to at least get eventual consistency.
But my question is whether propeller not evaluating pods for hours in such a scenario is expected or unexpected. I know that I can shard propeller but this would only help me if I break this down into multiple workflows? Any other parameters I can tune so have propeller evaluate the pods earlier?
Thank you!alert-oil-1341
12/05/2025, 2:44 PMmax-ttl-hours and gc-interval to control thisnice-hairdresser-45030
12/05/2025, 2:48 PMGCInterval config.Durationjson:"gc-interval" pflag:"Run periodic GC every 30 minutes"
MaxTTLInHours int@alert-oil-1341 thank you for the quick reply. Could you please elaborate how these parameters can help in this scenario? In my scenario the workflow is still running but the status in admin of some pods has not been updated for hours.json:"max-ttl-hours" pflag:"Maximum number of hours a completed workflow should be retained. Number between 1-23 hours"
alert-oil-1341
12/05/2025, 3:26 PMnice-hairdresser-45030
12/05/2025, 3:29 PMnice-hairdresser-45030
12/05/2025, 3:29 PMnice-hairdresser-45030
12/05/2025, 3:29 PMnice-hairdresser-45030
12/05/2025, 4:29 PMdownstream-eval-duration: 30s does this mean that we re evaluate all pods, rayjobs, ... every 30 seconds by default? Is my understanding correct that this is only a fallback mechanism and that by default the watch api should push on changes?
Could it be that re checking every 30s becomes an issue when running >10k pods, i.e. that it might help increasing this?nice-hairdresser-45030
12/05/2025, 4:48 PMpublish-k8s-events does anyone know whether disabling this helps?alert-oil-1341
12/05/2025, 4:53 PMkube-client-configalert-oil-1341
12/05/2025, 4:55 PMdownstream-eval-duration lower and sharded, but we've also been having issues w/ propeller crashes, so I'm more interested in the outcome. I don't think we've got a solutionnice-hairdresser-45030
12/05/2025, 4:58 PMdownstream-eval-duration lower as in less than 30s? Isn't this the interval after which the informer cache is completely resynched?
My current thinking is that this should be higher at high load, e.g. a few minutes to reduce stress on the api server.
Isn't this complete resync just a fallback mechanism in case watch events got lost?nice-hairdresser-45030
12/05/2025, 4:58 PMdownstream-eval-duration: 30s can lead to issues when running >10k pods as in "resynching the informer cache too often"? (Sorry for pinging here)alert-oil-1341
12/05/2025, 4:59 PMalert-oil-1341
12/05/2025, 5:00 PMalert-oil-1341
12/05/2025, 5:02 PMkube-client-config
The Kube client config controls the request throughput from FlytePropeller to the Kube API server. These requests may include creating/monitoring Pods or creating/updating FlyteWorkflow CRDs to track workflow execution. The default configuration (provided by k8s) contains very steep rate-limiting, and therefore FlytePropeller provides a default configuration that offers better performance. However, if your workload involves larger scales (e.g., >5k fanout dynamic or map tasks, >8k concurrent workflows, etc.,) the Kube client config rate limiting may still contribute to a noticeable drop in performance. Increasing the qps and burst values may help alleviate back pressure and improve FlytePropeller performance. An example of Kube-client-config is as follows:
legacy docs herealert-oil-1341
12/05/2025, 5:06 PMdownstream-eval-duration | lower the number - lower latency and lower throughput (low throughput is because the same workflow will be evaluated more times) | This indicates how often are external events like pods completion etc recorded.nice-hairdresser-45030
12/06/2025, 8:36 AM