I'm looking to speed up the startup time for my pods in Google Kubernetes Engine (GKE), specifically for browser automation tasks. Right now, it takes about 15 to 20 seconds for them to start. I've considered a few solutions like using a DaemonSet to pre-pull images, setting priority classes, and defining resource requests along with limits. Since the image is hosted on Google Container Registry, I'm not sure that the image itself is the issue. Any additional insights or recommendations would be greatly appreciated!
4 Answers
Just curious, how fast do your images start locally if they're already pulled? Also, what kind of workloads are you dealing with? Java, Node.js, Go? The configuration of your startup, readiness, and liveness probes could also make a huge difference.
What about considering serverless options? Knative can run on GKE and might significantly reduce your startup times if that fits your use case.
First off, have you pinpointed what's taking the longest? Is it the image pull or maybe something else, like the readiness probe? If it's just the image pull causing the delay, try using the 'IfNotPresent' image pull policy. There are also tools like Spegel that cache layers locally, which can help speed things up. Honestly, though, 15-20 seconds doesn’t seem too bad to me!
Have you looked into image streaming on GKE? It might allow your pods to start even if the image isn’t fully pulled yet. Also, make sure to investigate where the time is actually going—whether it’s mostly about pulling the image or if it’s the readiness probes causing delays.

I’m actually using the 'IfNotPresent' policy already. My manager is pushing for optimization, aiming to get it down to around 2-3 seconds. I thought 15 seconds was decent, too! I'll investigate further, thanks for the suggestions.