Home > Enterprise >  How to reduce downtime caused by pulling images in the Kubernetes Recreate deployment strategy
How to reduce downtime caused by pulling images in the Kubernetes Recreate deployment strategy

Time:12-19

Assuming I have a Kubernetes Deployment object with the Recreate strategy and I update the Deployment with a new container image version. Kubernetes will:

  1. scale down/kill the existing Pods of the Deployment,
  2. create the new Pods,
  3. which will pull the new container images
  4. so the new containers can finally run.

Of course, the Recreate strategy is exepected to cause a downtime between steps 1 and 4, where no Pod is actually running. However, step 3 can take a lot of time if the container images in question are or the container registry connection is slow, or both. In a test setup (Azure Kubernetes Services pulling a Windows container image from Docker Hub), I see it taking 5 minutes and more, which makes for a really long downtime.

So, what is a good option to reduce that downtime? Can I somehow get Kubernetes to pull the new images before killing the Pods in step 1 above? (Note that the solution should work with Windows containers, which are notoriously large, in case that is relevant.)

On the Internet, I have found this Codefresh article using a DaemonSet and Docker in Docker, but I guess Docker in Docker is no longer compatible with containerd.

I've also found this StackOverflow answer that suggests using an Azure Container Registry with Project Teleport, but that is in private preview and doesn't support Windows containers yet. Also, it's specific to Azure Kubernetes Services, and I'm looking for a more general solution.

Surely, this is a common problem that has a "standard" answer?

CodePudding user response:

Via https://www.reddit.com/r/kubernetes/comments/oeruh9/can_kubernetes_prepull_and_cache_images/, I've found these ideas:

So, it seems I have to implement this on my own, with a DaemonSet. I still hope someone can provide a better answer than this one

  • Related