Runners & infrastructure

Multi-gigabyte image pulls are now the EKS cold-start problem

Multi-gigabyte image pulls are now the EKS cold-start problem

The New Stack on August 10 published a piece on pulling multi-gigabyte container images in seconds on Amazon EKS, and the framing is the news: image pull time is no longer a background cost, it is the cold-start bottleneck on any EKS cluster running ML workloads. The article's own premise is that machine learning has changed what a container image looks like, and that a typical application now ships in a much larger image than the tooling was built to move.

Where the seconds actually go

An image pull on a Kubernetes node is not a single operation. The kubelet asks the container runtime; the runtime asks the snapshotter; the snapshotter asks the registry. Each layer of the image is a compressed blob. Every blob has to be authenticated, downloaded, decompressed, and unpacked onto the node's filesystem before the container can start. The bytes on the wire are only one part of the wall clock.

For a small web service image, none of that shows up on the pager. The image is a hundred megabytes, the pull finishes before the readiness probe cares, and the node is Ready. For an ML training or inference container that carries model weights, framework wheels, CUDA libraries and a Python runtime baked in, the same pipeline has to move an order of magnitude more data before the pod starts. If your autoscaler is bringing up a new GPU node under load, the pull is the reason the pod is not serving traffic yet.

Why the images got this big

The New Stack's read is that machine learning changed the shape of what teams ship. Weights, tokenizers, and framework stacks are heavy, and the operational path of least resistance is to bake them into the image so the container is self-contained on start. That decision moves complexity out of the runtime and into the registry: every scale-out event pays the full download cost, every node replacement pays it, every rollout across a fleet pays it in parallel and hits registry throughput limits.

That is fine when scale is stable. It is expensive when a scaling event, a spot reclamation or a rolling upgrade forces new nodes to pull the whole image before anything can run.

What the piece is describing

Rather than paraphrase specifics I cannot verify from the summary, the useful frame is the shape of the fix. Accelerating a large image pull on Kubernetes has a small number of well-understood levers: pull fewer bytes, pull them in parallel, start the container before the pull is complete, or move the bytes closer to the node. Snapshotter changes, streaming or lazy-loading formats, on-node caches and registry-side distribution all sit somewhere on those levers. Read the article for what EKS is specifically wiring up; the operational question for a platform team is which lever the change pulls, and what that costs on the failure path.

The rollback and caveat read

A pull-time optimization is a change to the boot path of every pod on the cluster. Treat it as one.

If the mechanism is a new snapshotter or lazy-pull format, the failure mode is a container that starts before the byte it needs is on disk, and a first request that stalls or errors instead of a clean image-pull failure at the kubelet layer. That is worse for on-call: the failure moves from a legible ImagePullBackOff to a latency spike inside the app.

If the mechanism is a caching or peer-to-peer layer between the node and the registry, the failure mode is a stale cache after a rebuild that reuses a tag. Digest-pinning your image references, not tags, is the operational discipline that keeps the acceleration honest.

If the mechanism is a build-side change, splitting weights out of the image and mounting them from object storage or a CSI volume, you have swapped an image-pull problem for an object-store availability problem. That is a fair trade for many teams, but it is a trade, not a free win.

The residual caveat, the same one that shows up whenever a platform moves work out of a well-understood layer: the optimization only pays off if your rollback path still works when the optimization is off. Verify the slow path still boots before you rely on the fast one.

Source: The New Stack (thenewstack.io)

Related
Runners & infrastructure

GPUs keep falling off the PCIe bus, and standard node health does not notice

AWS engineers write up what running Kubernetes at Amazon EKS scale taught them about GPU node failure, and why the default node health model has nothing to say when the GPU just vanishes from the bus.

July 20, 2026
Runners & infrastructure

AWS puts gray zone failures into the EKS control loop

The New Stack details how AWS treats non-obvious availability zone degradation as its own category on EKS, with zonal shift moving traffic away from an impaired zone before the traditional alarms fire. For CI/CD teams, it reframes what a regional resilience test needs to cover.

July 12, 2026
Platform engineering

AWS reworks the EKS control plane and starts selling it in sized tiers

Amazon EKS engineers detail a set of architectural changes to how the service runs the Kubernetes control plane, including a purpose-built journal that replaces etcd's Raft consensus, and a new tier-priced product, EKS Provisioned Control Plane, that lets customers reserve API and scheduling capacity ahead of bursty workloads.

July 1, 2026

Turn this into your pipeline. Build it on Buddy.

Start free