Azure Container Apps'de yaygın dağıtım hatalarını giderme

Bu makale, Azure Container Apps'de destek yükseltmesi gerektiren dağıtım hatası senaryolarını belirlemenize ve çözmenize yardımcı olur. Her senaryo belirtiler, portal ve CLI tanılama adımları ve çözümleri içerir.

Hızlı başvuru tablosunda belirtinizi bulun ve eşleşen senaryonun bağlantısını izleyin.

Belirti hızlı başvuru

Belirti Scenario
Dağıtım sağlama hatasıyla başarısız oluyor, düzeltme oluşturulmamış Görüntü çekme hataları
Düzeltme oluşturuldu ancak durum Failed veya Degraded Kapsayıcı kilitlenmesi ve başlatma hataları
Gizli anahtar veya ortam değişkeni çalışma zamanında boş ya da eksik## Gizli anahtar erişim sorunları
Key Vault başvurusu dağıtım sırasında veya çalışma zamanında başarısız oluyor Key Vault başvuru hataları
Yönetilen kimlik çağrıları 401 veya 403 döndürür Yönetilen kimlik yanlış yapılandırması
Init kapsayıcısı kilitleniyor veya başarısız oluyor, uygulama hiçbir zaman başlatılamıyor Başlatma zamanlaması sorunları
Revizyon oluşturuldu ancak Degraded olarak işaretlendi Sistem durumu yoklaması hataları
Uygulama sağlıklı, ancak istekler hata döndürüyor veya yanıt vermiyor Giriş ve trafik yönlendirme sorunları
Kayıt defteri kimlik doğrulaması başarısız oluyor (401 veya YETKISIZ) Kapsayıcı kayıt defteri kimlik doğrulaması

Nereye bakmalı: tanılama yüzeyleri

Dağıtım hatalarını araştırmak için aşağıdaki tanılama yüzeylerini kullanın.

Surface Ne gösterir Nasıl erişilir?
Sorunları tanılama ve çözme Yaygın sorunlar, sorun giderme kategorileri ve kılavuzlu analiz için otomatik algılayıcılar. Azure portalında kapsayıcı uygulamanıza gidin ve Sorunları tanıla ve çöz'e tıklayın.
Sistem günlükleri Platform düzeyindeki olaylar: imaj indirme durumu, yoklama sonuçları, kimlik hataları, gizli bilgi eşitleme sonuçları. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 veya Log Analytics ContainerAppSystemLogs_CL tablosu.
Konsol günlükleri Uygulama stdout/stderr: yığın izlemeleri, başlangıç iletileri, çalışma zamanı hataları. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 veya portal günlük akışı bölmesi.
HTTP günlükleri Giriş katmanı istek günlükleri: durum kodları, gecikme süresi, yollar, yeniden denemeler, yanıt ayrıntıları. Ortamda Azure İzleyici tanılama ayarları aracılığıyla etkinleştirin. Log Analytics ContainerAppHTTPLogs tablosu.
Revizyon ayrıntı özellikleri provisioningState, provisioningError, healthState, , runningState. runningStateDetails az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json veya portal Düzeltmeler bölmesi.
Dağıtım zamanı hataları Revizyon oluşturulmadığında uygulama düzeyi provisioningState ve provisioningError az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json

Görüntü çekme hataları

Görüntü çekme hataları, dağıtım hatalarının en yaygın nedenlerinden biridir. Bunlar genellikle Azure Container Apps kullanılabilir bir düzeltme oluşturmadan önce gerçekleşir.

Symptoms

  • Düzeltme oluşturulmamış.
  • provisioningState, Failed'e eşittir.
  • Hata iletisinde , ImagePullBackOff, veya UNAUTHORIZEDifadeleri yer alırmanifest unknown.

Nereye bakmalı: imaj çekme tanılaması

Azure portalında Kapsayıcı Uygulaması>Düzeltmeleri'ne gidin (liste boş veya başarısız bir girdi gösteriyor) >Sorunları tanılayın ve çözün ve "görüntü" araması yapın.

# Check app-level provisioning state and error
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "{provisioning:properties.provisioningState, error:properties.provisioningError, latestRevision:properties.latestRevisionName}" -o json

# List revisions (expect empty or failed)
az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "[].{name:name, health:properties.healthState, provisioning:properties.provisioningState}" -o table

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Görüntü etiketi yok manifest unknown, tag not found Kayıt defterinizde tam etiketin mevcut olduğunu doğrulayın: az acr repository show-tags --name <AZURE_CONTAINER_REGISTRY_NAME> --repository <REPOSITORY_NAME>
Kayıt defteri kimlik doğrulaması gerektirir UNAUTHORIZED: authentication required Kapsayıcı uygulamasında kayıt defteri kimlik bilgilerini yapılandırın. ACR çekme işlemi için yönetici kimlik bilgilerini veya yönetilen kimliği kullanın. Bkz. Kapsayıcı kayıt defteri kimlik doğrulaması.
Yanlış kayıt ana makine adı name unknown, DNS çözümleme hatası --image değerinin doğru <REGISTRY>.azurecr.io konak adını kullandığını doğrulayın.
Güvenlik duvarı veya NSG, kayıt defterini engelliyor Bağlantı zaman aşımına uğradı Özel bir VNet kullanıyorsanız kayıt hizmetine giden erişim olduğundan emin olun. AzureContainerRegistry Hizmet etiketini veya FQDN kurallarını ekleyin.

Konteyner çökmesi ve başlatma hataları

Düzeltme oluşturulduğunda ancak iş yükü başlatılamıyorsa veya çalışmaya devam edilemezse bu bölümü kullanın.

Symptoms

  • Düzeltme oluşturulur ancak healthState şeklindedir Unhealthy.
  • runningState, Failed'e eşittir.
  • Konsol günlükleri boş olabilir (kapsayıcı çıktı yazmadan önce sonlanırsa).

Nereye bakmalı: çökme ve başlangıç tanılaması

Azure portalında Kapsayıcı Uygulaması>Düzeltmeleri'ne gidin, başarısız düzeltmeyi seçin ve Olaylar sekmesini açın. veya BackOff olayları denetleyinCrashLoopBackOff.

# Inspect revision detail
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "{health:properties.healthState, running:properties.runningState, details:properties.runningStateDetails, error:properties.provisioningError}" -o json

# Pull console logs (if any output was written)
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100

# Pull system logs for platform-level events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Uygulama başlatılırken çöküyor Konsol günlüklerinde yığın izleme Uygulama hatasını düzeltin. Günlükler boşsa, çökme stdout tamponu boşaltılmadan önce gerçekleşir. Erken günlükleme ekleyin veya çalışma zamanınızı çıkış arabelleğe alımını devre dışı bırakacak şekilde ayarlayın (örneğin, PYTHONUNBUFFERED=1).
Geçersiz komut veya giriş noktası exec format error, executable file not found Kapsayıcının command ve args öğelerinin imajın beklediğiyle eşleştiğini doğrulayın. properties.template.containers[].command için az containerapp revision show denetleyin.
Eksik ortam değişkeni KeyError, undefined, null başvuru Tüm gerekli env değişkenlerinin ayarlandığını doğrulayın. Bkz. Secret erişim sorunları.
Yetersiz kaynak OOMKilled Kapsayıcıdaki bellek ve CPU sınırlarını artırın: az containerapp update -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --cpu 1.0 --memory 2.0Gi.

Gizli erişim sorunları

Çalışma zamanında uygulama yapılandırmasının bozulmasına neden olan eksik veya boş gizli anahtar değerlerinde sorun gidermek için bu bölümü kullanın.

Symptoms

  • Kapsayıcı başlatılır, ancak beklenen yapılandırma değeri boş veya eksik olduğundan uygulama başarısız olur.
  • Gizli bilgilere başvuru yapan ortam değişkenlerinin değeri yok.

Nereye bakmalı: gizli başvuru tanılamaları

Azure portalında, gizli anahtarın mevcut olduğunu doğrulamak için Kapsayıcı Uygulaması>Ayarlar>Gizli anahtarlar bölümüne gidin. Ardından Kapsayıcı Uygulaması>Düzeltmeleri'ne gidin, düzeltmeyi seçin ve Başvurunun doğru olduğunu doğrulamak için Kapsayıcı ayrıntıları>Ortam değişkenleri'ni denetleyin.

# List secrets defined on the app
az containerapp secret list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table

# Show the revision template to verify env var references
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "properties.template.containers[].env" -o json

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Gizli dizi adı uyuşmazlığı Env var değeri boş Ortam değişkenindeki secretRef, gizli anahtar adıyla tam olarak eşleşmelidir (büyük/küçük harfe duyarlıdır).
Gizli anahtar tanımlanmadı Bilinmeyen bir gizli bilgiye başvuran dağıtım hatası Dağıtımdan önce secret'ı tanımlayın: az containerapp secret set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --secrets mysecret=myvalue.
Gizli anahtar güncellendi ancak revizyon yeniden başlatılmadı Eski değer kalıcı Yeni bir düzeltme dağıtın veya mevcut düzeltmeyi yeniden başlatın: az containerapp revision restart -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV>. Yalnızca bir gizli anahtarı güncellemek yeni bir revizyonu tetiklemez.
Revizyon ona referans verirken gizli silindi Kapsayıcı başlatılamıyor Silinen gizli anahtara olan referansı kaldıran yeni bir revizyon dağıtın, ardından eski revizyonları devre dışı bırakın.

Important

Container Apps'te gizli anahtarlar uygulama kapsamındadır, ancak ortam değişkeni başvuruları revizyon kapsamındadır. Bir gizli değerin değiştirilmesi, çalışan revizyonlara otomatik olarak yansımaz. Güncelleştirilmiş değerin geçerli olması için yeni bir düzeltme oluşturmanız veya mevcut düzeltmeyi yeniden başlatmanız gerekir.

Key Vault başvuru başarısızlıkları

Key Vault destekli gizli anahtarlar dağıtım sırasında veya uygulama çalışırken çözümlenemezse bu bölümü kullanın.

Symptoms

  • Dağıtım başarısız olur veya gizli anahtar değeri kullanılamaz.
  • Sistem günlükleri, Key Vault erişim hatalarına atıfta bulunur.
  • provisioningError Key Vault’a yönelik kimlik doğrulama veya yetkilendirme hatasından söz eder.

Nereye bakılır: Key Vault erişim tanılaması

Azure portalında Kapsayıcı Uygulaması>Ayarlar>Gizli anahtarlar bölümüne gidin (Key Vault referansında bir uyarı simgesi arayın). Ardından Kapsayıcı Uygulaması>Sorunları tanılama ve çözme bölümüne gidip "Key Vault" araması yapın.

# List secrets and check for Key Vault reference status
az containerapp secret list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json

# Verify managed identity is assigned
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Yönetilen kimlik etkinleştirilmedi Managed identity not configured Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği etkinleştirin: az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned.
Eksik RBAC rolü Authorization failed, Access denied Key Vault yönetilen kimliğe Key Vault Gizli Dizi kullanıcı rolü verin: az role assignment create --role "Key Vault Secrets User" --assignee <IDENTITY_PRINCIPAL_ID> --scope <KEYVAULT_RESOURCE_ID>.
Key Vault güvenlik duvarı erişimi engelliyor Bağlantı zaman aşımı, ForbiddenByFirewall Container Apps ortamının giden IP'lerini Key Vault güvenlik duvarına ekleyin veya özel bir uç nokta yapılandırın. Ayrıca, Azure Güvenlik Duvarı ile UDR kullanıyorsanız hizmet etiketini ve AzureKeyVault FQDN'yi ekleyinlogin.microsoft.com.
Key Vault'ta gizli dizi devre dışı bırakıldı SecretDisabled Key Vault'ta gizli anahtarı etkinleştirin: Azure portalında > Key Vault > Gizli anahtarlar > gizli anahtarı seçin > Etkinleştir.
Yanlış biçimlendirilmiş Key Vault URI'sı SecretNotFound, InvalidUri URI biçimini doğrulayın: https://<vault>.vault.azure.net/secrets/<secret-name> veya https://<vault>.vault.azure.net/secrets/<secret-name>/<version>.
RBAC rol yayılımı gecikmesi Yaklaşık 5 dakika sonra çalışır RBAC değişikliklerinin yayılması 10 dakika kadar sürebilir. Kimlik belirteci önbelleği 24 saate kadar kalıcı olabilir. Bekleyin ve yeniden deneyin veya yeni bir düzeltme dağıtın.

Yönetilen kimlik yanlış yapılandırması

Uygulamanız yönetilen kimliği kullanacak şekilde yapılandırılmış olsa bile Azure hizmetleri için kimlik doğrulaması başarısız olduğunda bu bölümü kullanın.

Symptoms

  • Uygulama kodu, Azure hizmetleri çağırırken 401 (Yetkisiz) veya 403 (Yasak) alır.
  • Yönetilen kimlik belirteci alma işlemi başarısız oluyor.

Nereye bakılır: kimlik ve yetkilendirme tanılaması

Azure portalında Container App>Ayarlar>Kimlik bölümüne gidin (sistem tarafından atananın On veya kullanıcı tarafından atanan kimliklerin listelendiğini doğrulayın). Ardından, rol atamalarını görmek için hedef kaynağın IAM / Erişim denetimi bölmesini kontrol edin.

# Verify identity configuration
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>

# Check role assignments for the identity's principal ID
az role assignment list --assignee <PRINCIPAL_ID> --all -o table

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Kimlik atanmadı SDK hata atıyor ManagedIdentityCredential Bir kimlik atayın: az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned.
Yanlış kimlik kullanıldı (sistem ve kullanıcı tarafından atanan) Hedef kaynaktaki 403 hatası Kullanıcı tarafından atanan kimlik kullanıyorsanız, kodunuzda istemci kimliğini belirtin: DefaultAzureCredential(managed_identity_client_id="<CLIENT_ID>").
Hedef kaynakta eksik rol ataması 403 Hedef kaynakta gerekli rolü atayın (örneğin, bir depolama hesabında Storage Blob Data Contributor).
Init kapsayıcısı bir kimliğe ihtiyaç duyuyor ancak bu mevcut değil Init kapsayıcısı kimlik doğrulama hatasıyla başarısız oluyor Yalnızca tüketim ve ayrılmış iş yükü profili ortamlarında init kapsayıcıları yönetilen kimliği kullanamaz. Kimliğe bağlı mantığı ana kapsayıcıya taşıyın veya bir iş yükü profili tüketim ortamı kullanın ve kimlik üzerinde lifecycle: Init ayarını yapın.
Rol değişikliği sonrasında belirteç önbelleği eskidi 403, düzeltmeden sonra dakikalar boyunca devam eder Kimlik belirteci önbelleği 24 saate kadar kalıcı olabilir. Belirteç yenilemeyi zorlamak için yeni bir revizyon dağıtın.

İpucu

Container Apps, yönetilen kimlik belirteçleri almak için dahili olarak erişilebilir bir REST uç noktasını kullanıma sunar. Bu uç noktayı doğrudan çağırmak yerine, ortamlar arasında tutarlı bir deneyim için Azure Kimlik SDK'sını (DefaultAzureCredential) kullanın.

Başlatma zamanlaması sorunları

Başlatma kapsayıcıları uygulamanın başlatılmasını engellediğinde veya ana kapsayıcı istekleri işlemeye başlamadan önce başarısız olursa bu bölümü kullanın.

Symptoms

  • Uygulama hiçbir zaman çalışır duruma ulaşmaz.
  • Init kapsayıcıları takılı kalmış gibi görünüyor veya başarısız oluyor.
  • Sistem günlükleri, init kapsayıcısının çalıştığını ancak hiçbir zaman tamamlanmadığını gösterir.

Nereye bakılmalı: başlatma kapsayıcısı tanılama

Azure portalında Kapsayıcı Uygulaması > Revizyonlar'a gidin, revizyonu seçin ve Olaylar sekmesini açın. Init kapsayıcısı olaylarını arayın.

# Check revision running state
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "{running:properties.runningState, details:properties.runningStateDetails}" -o json

# Check init container logs
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --container <INIT_CONTAINER_NAME> --tail 100

# System logs for platform events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Init container, henüz kullanıma hazır olmayan bir hizmete bağlıdır Init kapsayıcısı günlüklerinde bağlantı reddedildi veya zaman aşımına uğradı Init kapsayıcısında yeniden deneme mantığı veya hazırlık denetimi ekleyin. Bağımlı hizmetlerin başlangıçta kullanılabilir olduğunu varsaymayın.
Init kapsayıcısı hiçbir zaman çıkılmaz Düzeltme şu şekilde kalır: Provisioning init kapsayıcısının sonlu bir komut çalıştırdığından ve 0 koduyla çıktığından emin olun. Süresiz olarak çalışan init kapsayıcıları ana kapsayıcının başlatılmasını engeller.
Init kapsayıcısı yönetilen kimliğe ihtiyaç duyuyor Init kapsayıcısından 401 veya 403 Salt tüketim ve ayrılmış iş yükü profili ortamlarında yönetilen kimlik, init kapsayıcıları için kullanılamaz. İş yükü profili tüketim ortamı kullanın veya kimliğe bağlı iş yükünü ana kapsayıcıya taşıyın.
Init kapsayıcı görüntüsü çekme işlemi başarısız oluyor Görüntü çekme hatalarıyla aynı belirtiler Aynı kayıt defteri kimlik doğrulaması ve görüntü etiketi denetimlerini uygulayın.
İşlem sırası: gizli henüz senkronize edilmemiş Init kapsayıcısı boş secret okur Key Vault gizli eşitlemesi eşzamansız olarak gerçekleşir. Başlatma kapsayıcısı, Key Vault’ta başvurulan bir gizli anahtara bağlıysa, değer henüz kullanılamıyor olabilir. Başlatma zamanı bağımlılıkları için doğrudan gizli anahtarları kullanın veya yeniden deneme mantığı ekleyin.

Sağlık sondası hataları

Revizyonlar başarıyla dağıtıldığı halde durum denetimleri tarafından sağlıksız veya bozulmuş olarak işaretlendiğinde bu bölümü kullanın.

Symptoms

  • Revizyon hazırlanmıştır ancak çalışma durumu Degraded durumundadır.
  • Sistem günlükleri, yoklama hatası ayrıntılarını içeren olayları gösterir Unhealthy .
  • Uygulama yerel olarak çalışıyor ancak ACA'da sistem durumu denetimlerinden geçemiyor.

Nerede aranır: prob sağlık tanılaması

Azure portalında Kapsayıcı Uygulaması>Uygulama>Kapsayıcılar>Sistem durumu yoklamaları bölümüne gidin (yoklama yapılandırmasını doğrulayın). Ardından Kapsayıcı Uygulaması>Düzeltmeleri'ne gidin, düzeltmeyi seçin ve Olaylar'ı açın.

# Check the revision's probe configuration
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
  --query "properties.template.containers[].probes" -o json

# System logs for probe failure events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Denetim bağlantı noktası, uygulama bağlantı noktasıyla eşleşmiyor Sonda, "bağlantı reddedildi" döndürüyor Yoklama bağlantı noktasını, uygulamanızın dinleme bağlantı noktası ve Ingress targetPort ile eşleşecek şekilde ayarlayın.
Uygulamanın başlatılması çok uzun sürüyor Uygulama hazır olmadan yoklama başarısız oluyor, düzeltme devam ediyor Degraded Canlılık ve hazır olma problarındaki initialDelaySeconds değerini artırın. Java uygulamalarında yaygındır.
Yoklama yolu 200 olmayan bir değer döndürür Yoklama HTTP hatasıyla başarısız oluyor Sağlık denetimi uç noktasının 200 durum kodu döndürdüğünden emin olun. HTTP yoklamaları için yolun mevcut olduğunu ve doğru yanıt verdiğini doğrulayın.
Uygulama yalnızca başlatmanın ardından bağlanıyorsa TCP yoklaması Probe, uygulama dinlemeye başlamadan önce bağlanır Uygulamaya bağlantı noktasına bağlanması için zaman vermek üzere, daha yüksek bir failureThreshold başlangıç yoklaması kullanın.

Varsayılan yoklama değerleri

Girişi etkinleştirdiğinizde ve yoklamaları yapılandırmadığınızda, ACA şu varsayılan ayarları uygular:

Mülkiyet Startup Canlılık Hazırlık
Protocol TCP TCP TCP
Port Giriş hedef bağlantı noktası Giriş hedef bağlantı noktası Giriş hedef bağlantı noktası
İlk gecikme 1s 1s 3s
Dönem 1s 1s 5s
Hata eşiği 240 48 N/A

Giriş ve trafik yönlendirme sorunları

Uygulama çalışırken ancak giriş veya düzeltme trafik ayarları yanlış olduğundan istekler başarısız olduğunda bu bölümü kullanın.

Symptoms

  • Uygulama çalışıyor ve iyi durumda, ancak HTTP istekleri hata döndürer (404, 502) veya yanıt döndürmez.
  • Uygulama az containerapp exec üzerinden çalışır, ancak genel URL üzerinden çalışmaz.

Nereye bakılması gerekiyor: giriş ve trafik tanılaması

Azure portalında Kapsayıcı Uygulaması>Ayarları>Girişi'ne gidin. Ardından Kapsayıcı Uygulama>Uygulama>Revizyonlar bölümüne gidin (trafik bölünmesini denetleyin).

# Check ingress configuration and traffic split
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "{ingress:properties.configuration.ingress, latestReady:properties.latestReadyRevisionName}" -o json

# Verify the FQDN
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --query "properties.configuration.ingress.fqdn" -o tsv

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Giriş etkin değil FQDN atanmadı, uygulamaya erişemiyor Girişi etkinleştir: az containerapp ingress enable -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type external --target-port 8080 --transport auto.
Hedef bağlantı noktası uyuşmazlığı 502 Hatalı Ağ Geçidi Uygulamanızın dinlediği bağlantı noktasıyla eşleşecek şekilde ayarlayın targetPort .
Son revizyonda trafik ağırlığı %0'dır Eski düzeltme trafiğe hizmet eder Trafik bölmesini güncelle: az containerapp ingress traffic set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision-weight latest=100
IP kısıtlaması istemciyi engelliyor 403 Giriş ayarları altında IP güvenlik kısıtlamalarını denetleyin.
Yanlış aktarım (HTTP ve TCP) Bağlantı hataları Giriş türünün uygulamanızın protokolüyle eşleştiğinden emin olun.

Kapsayıcı kayıt defteri kimlik doğrulaması

Uygulama, kapsayıcı kayıt defterinizde kimlik doğrulaması yapamadığı için imaj çekme işlemleri başarısız olduğunda bu bölümü kullanın.

Symptoms

  • Dağıtım, UNAUTHORIZED: authentication required hatasıyla başarısız oluyor.
  • Kayıt defteri etiketi denetlemeden önce isteği reddettiği için bu hata genellikle diğer sorunları (bozuk görüntü etiketi gibi) maskeler.

Nereye bakmalı: kayıt defteri kimlik doğrulama tanılaması

Azure portalında Kapsayıcı Uygulaması>Ayarları>Kapsayıcısı'na gidin (kayıt defteri ayarlarını denetleyin). Ardından Container App>Tanılama ve sorunları çözme bölümüne gidin ve "kayıt defteri" araması yapın.

# Check configured registries
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
  --query "properties.configuration.registries" -o json

# Verify ACR credentials work
az acr login --name <AZURE_CONTAINER_REGISTRY_NAME>
docker pull <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io/<REPOSITORY_NAME>:<TAG>

Yaygın nedenler ve çözümler

Cause Hata sinyali Çözüm
Hiçbir registry kimlik bilgisi yapılandırılmadı UNAUTHORIZED Kayıt defteri kimlik bilgilerini ekleyin: az containerapp registry set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --server <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io --identity system.
ACR'de yönetici kimlik bilgileri devre dışı bırakıldı UNAUTHORIZED yönetici kullanıcı ile Yönetici kullanıcıyı etkinleştir: az acr update -n <AZURE_CONTAINER_REGISTRY_NAME> --admin-enabled true. Tercih edilen: Bunun yerine ACR çekmesi için yönetilen kimlik kullanın.
Yönetilen kimlikte AcrPull rolü yok UNAUTHORIZED AcrPull rolünü atayın: az role assignment create --role AcrPull --assignee <PRINCIPAL_ID> --scope <ACR_RESOURCE_ID>.
Yanlış sunucu ana bilgisayar adı name unknown Kayıt defteri sunucusunun ACR'nizle eşleştiklerini doğrulayın: <your-acr>.azurecr.io.

Tanılama iş akışı özeti

Neyin başarısız olduğundan emin değilseniz bu diziyi kullanın:

  1. az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json'i çalıştırın. provisioningState, provisioningError ve latestRevisionName öğelerini denetleyin.

  2. az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table'i çalıştırın. Liste boşsa, hata bir görüntü çekme veya şablon doğrulama sorunudur (Görüntü çekme hataları ve Kapsayıcı kayıt defteri kimlik doğrulaması). Bir düzeltme varsa, 3. adıma geçin.

  3. az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json'i çalıştırın. healthState, runningState, runningStateDetails ve provisioningError denetleyin.

  4. az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 komutunu çalıştırarak yoklama hataları, kimlik hataları ve gizli dizi eşitleme sorunları gibi platform düzeyindeki olayları görüntüleyin.

  5. Yığın izlemeleri, yapılandırma hataları ve bağlantı hataları dahil olmak üzere uygulama stdout/stderr dosyasını görüntülemek için komutunu çalıştırın az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 .

  6. Kimlik doğrulamasıyla ilgili hatalar önceki adımlarda göründüyse kimlik yapılandırmasını doğrulamak için komutunu çalıştırın az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> .

Portalda sorunları tanılama ve çözme özelliğini kullanma

Container Apps portalı, otomatik tanılamalar içeren bir Sorunları tanılama ve çözme dikey penceresi içerir:

  1. Azure portalında kapsayıcı uygulamanıza gidin.
  2. Sol gezinti bölmesinden Sorunları tanıla ve çöz'e tıklayın.
  3. Belirli tanıları ("image pull", "sistem durumu yoklaması" veya "ingress" gibi) bulmak için arama kutusunu kullanın.
  4. Kılavuzlu analiz için bir sorun giderme kategorisi kutucuğu seçin.

Bu bölme, yönlendirmeli tanılama için önerilen başlangıç noktasıdır. Bu makaledeki tüm senaryoları kapsamayabilir, ancak yaygın sorunlar için otomatik denetimler sağlar.

Daha derin inceleme için Log Analytics sorguları

CLI çıktısı ve portal tanılama bilgileri yeterli değilse, temeldeki günlükleri doğrudan Log Analytics'te sorgula. Aşağıdaki iki sorgu, platform düzeyindeki hatalar ve giriş düzeyi HTTP hataları için en yaygın başlangıç noktalarını kapsar.

Sistem düzeyinde hataları bulma

ContainerAppSystemLogs_CL
| where RevisionName_s == "<REV>"
| where Log_s contains "BackOff" or Log_s contains "Failed" or Log_s contains "Error"
  or Reason_s == "Unhealthy"
| project TimeGenerated, Reason_s, Log_s
| order by TimeGenerated desc
| take 50

Bu sorgu görüntü çekme hatalarını, yoklama hatalarını, sağlama hatalarını ve diğer platform olaylarını gösterir.

HTTP hatalarını bulma (HTTP günlüklerinin etkinleştirilmesi gerekir)

Giriş katmanı HTTP günlüklerini yayar ve siz de bu günlükleri kabul edersiniz. Container Apps yönetilen ortamındaki Azure İzleyici tanılama ayarları aracılığıyla bu günlükleri etkinleştirin. Bunları etkinleştirdikten sonra ContainerAppHTTPLogs tablosu Log Analytics'te görünür. Tablonun görünmesi birkaç dakika sürebilir.

ContainerAppHTTPLogs
| where TimeGenerated > ago(1h)
| where StatusCode >= 400
| project TimeGenerated, ContainerAppName, RevisionName, Method, Path,
  StatusCode, ResponseCodeDetails, RequestDuration, RequestId
| order by TimeGenerated desc
| take 100

Bu sorgu, giriş katmanı HTTP günlüklerini son bir saat için yalnızca başarısız istekleri (durum kodu 400 veya üzeri) gösterecek şekilde filtreler. Zaman damgası, uygulama ve düzeltme adı, HTTP yöntemi ve yolu, hata durum kodu, hatanın kapsayıcınızdan mı () yoksa platformdan mı (ResponseCodeDetailsvia_upstream, route_not_found), istek süresinden kaynaklandığını belirten bir connection_timeout alan ve uygulama günlükleriyle ilişkilendirmek için kullanabileceğiniz benzersiz bir istek kimliğini döndürür.

Yavaş istek analizi, revizyona göre hata oranı, tek istek izleme ve en çok başarısız olan uç noktalar dahil olmak üzere daha fazla sorgu için bkz. Log Analytics ile Azure Container Apps günlüklerini izleme.