Windows ACI in VNet: 30-min DeploymentTimeout on provisioning + does the private IP persist across restarts?

Pavan Adapala (SONATA SOFTWARE NORTH AMERICA) 0 Reputation points Microsoft External Staff
2026-07-10T06:32:47.18+00:00

Tags: azure-container-instances · azure-application-gateway · azure-virtual-network

Environment

  • Azure Container Instances (ACI), Windows container group
  • Region: West US
  • Deployed into a VNet subnet (delegated to ACI)
  • Image: Windows Server Core ltsc2022 + Python 3.11 + .NET 8 SDK + PowerShell Core (~several GB)
  • Fronted by an Application Gateway whose backend pool targets the container's private IP
  • CPU 2 / Memory 4 GB

Issue 1 — Provisioning timeout (DeploymentTimeout)

A deployment of the container group failed to provision. The group-level event was:

"Subscription deployment didn't reach a successful provisioning state after '00:30:00'." (name: DeploymentTimeout, type: Warning)

Result: provisioningState = Failed, the container never started (state stayed "Waiting to run", no IP assigned), causing an outage. An identical redeploy a few minutes later succeeded with no changes.

Questions:

  1. What typically causes a Windows ACI group to hit the 30-minute provisioning timeout, and are there known West US Windows-ACI capacity constraints?
  2. Recommended mitigations to avoid it (e.g., image-size reduction, using the .NET runtime instead of the SDK, multi-stage build, different region, warm-up, or retry strategy)?

Issue 2 — Private IP retention across restarts

Our Application Gateway backend pool references the container group's private IP. We have observed the private IP change between restarts/redeploys (e.g., 10.0.3.27 → 10.0.3.24 → 10.0.3.4).

Question:

  1. Is there a documented guarantee about whether an ACI container group deployed into a VNet subnet retains its private IP across:
    • a container process crash / restart,
    • a platform-initiated recreation (host maintenance),
    • a stop/start?
    If the IP is not stable, what is the recommended pattern to give an AppGW backend a stable target for ACI (e.g., private DNS, static IP, or a different hosting option such as Azure Container Apps)?

What I've already done

  • Confirmed it is not an image/app defect (same image deploys and runs fine).
  • Implemented an automated job that re-points the AppGW backend pool when the ACI IP drifts (workaround).

I'm looking for the authoritative platform answer on the timeout cause and the IP-stability guarantee so I can choose the right long-term architecture.

Azure Container Instances

2 answers

Sort by: Most helpful
  1. Anusree Nashetty 6,715 Reputation points Microsoft External Staff Moderator
    2026-07-10T08:00:47.3766667+00:00

    Hello Pavan Adapala (SONATA SOFTWARE NORTH AMERICA),

    Thank you for posting your query at Microsoft Q&A Platform.

    In accordance with Alex's observations and continuing the discussion, I would like to provide the following clarification:

    For Issue 1, the available information suggests that the deployment timeout was likely encountered during the ACI provisioning stage rather than during container execution. Since an identical deployment succeeded shortly afterward without any configuration changes, this may indicate a transient provisioning condition, such as temporary resource allocation delays or regional capacity constraints. While large Windows-based container images can contribute to longer provisioning times, the successful redeployment without modification suggests that image size alone may not fully explain the observed behavior. Microsoft recommends optimizing container images through techniques such as multi-stage builds and using runtime images instead of SDK images where applicable.

    For Issue 2, current Microsoft guidance does not provide a documented guarantee that an Azure Container Instance will retain the same private IP address across lifecycle events. Microsoft explicitly advises against relying on hard-coded ACI IP addresses because a container group's IP may change following restart or recreation events. Therefore, customers should not architect solutions that depend on private IP persistence for ACI workloads.

    Based on this guidance, while a private IP may appear unchanged in some scenarios, there is no documented assurance that it will remain stable across container group restarts, stop/start operations, redeployments, or platform-initiated maintenance activities. For workloads requiring a stable backend endpoint, it is recommended to use an abstraction layer such as DNS-based service discovery or consider container hosting platforms that provide more stable ingress patterns.

    At this time, we have not identified any Microsoft documentation that guarantees private IP retention for ACI container groups deployed into a VNet subnet.

    References:

    If you have any further queries, please do let us know.

    If the answer is helpful, please click "Accept Answer" and "Upvote it"

    Was this answer helpful?

    0 comments No comments

  2. Alex Burlachenko 25,120 Reputation points MVP Volunteer Moderator
    2026-07-10T07:17:16.2466667+00:00

    hi Pavan Adapala (SONATA SOFTWARE NORTH AMERICA) & thx for sharing urs issue here at Q&A portal,

    the two issues are probably unrelated. For Issue 1, a DeploymentTimeout after exactly 30 minutes usually means the ACI service couldn't complete provisioning, not that your container crashed. Since the same image deployed successfully a few minutes later with no changes, I'd lean toward a transient platform/capacity issue rather than an application problem. Large Windows images can definitely increase provisioning time, so reducing the image size (multi-stage build, runtime instead of SDK, removing unnecessary layers) is still good practice. But if an identical retry succeeds immediately, image size alone probably isn't the root cause. A retry strategy is a good mitigation, and if this becomes frequent in a specific region, it's worth opening a support case so Microsoft can check backend capacity.

    For Issue 2, I wouldn't rely on an ACI private IP remaining stable. A container restart inside the existing container group may keep the IP, but there is no documented guarantee that the private IP will survive a stop/start, failed deployment, or platform recreation. If the container group is recreated, you should assume the private IP can change, because of that, using an Application Gateway backend that points directly to an ACI private IP isn't a great long-term design.

    If you need a stable backend, I'd consider Azure Container Apps (stable ingress), AKS with a Service, A private DNS-based indirection if it fits your architecture. https://learn.microsoft.com/azure/container-instances/container-instances-vnet

    If Microsoft can confirm an official IP persistence guarantee (or lack of one), that would be helpful. Based on the current documentation, though, I wouldn't architect around the private IP remaining unchanged after lifecycle events.

    rgds,

    Alex

    &

    If my answer was helpful pls mark it and additional thx if u follow me at Q&A portal

    and at my blog https://ctrlaltdel.blog/

     

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.