Azure Container Instances'taki sık karşılaşılan sorunları giderme

Bu makalede kapsayıcıları yönetme veya Azure Container Instances dağıtmayla ilgili yaygın sorunları giderme adımları gösterilmektedir. Ayrıca bkz . Sık sorulan sorular.

Daha fazla desteğe ihtiyacınız varsa Azure portal yardım + destek seçenekleri bölümüne bakın.

Kapsayıcı grubu dağıtımı sırasında karşılaşılan sorunlar

Adlandırma kuralları

Kapsayıcı belirtiminizi tanımlarken, belirli parametreler adlandırma kısıtlamalarına uymayı gerektirir. Aşağıda, kapsayıcı grubu özellikleri için belirli gereksinimleri olan bir tablo yer almaktadır. Daha fazla bilgi için bkz. Azure Mimari Merkezi'ndeki Adlandırma kuralları ve Azure kaynakları için adlandırma kuralları ve kısıtlamaları.

Kapsam Uzunluk Büyük/Küçük Harf Kullanımı Geçerli karakterler Önerilen düzen Örnek
Kapsayıcı adı1 1-63 Küçük harf İlk veya son karakter dışında her yerde alfasayısal ve kısa çizgi <name>-<role>-container<number> web-batch-container1
Kapsayıcı bağlantı noktaları 1 ile 65535 arasında Tamsayı 1 ile 65535 arasında tamsayı <port-number> 443
DNS ad etiketi 5-63 Büyük/Küçük harfe duyarsız İlk veya son karakter dışında her yerde alfasayısal ve kısa çizgi <name> frontend-site1
Ortam değişkeni 1-63 Büyük/Küçük harfe duyarsız İlk veya son karakter dışında herhangi bir yerde alfasayısal ve alt çizgi (_) <name> MY_VARIABLE
Birim adı 5-63 Küçük harf Alfasayısal ve tireler ilk veya son karakter dışında herhangi bir yerde olur. Ardışık iki kısa çizgi içeremez. <name> batch-output-volume

1 Kapsayıcı örneklerinden bağımsız olarak belirtilmediğinde de kapsayıcı grubu adları için kısıtlama (örneğin az container create , komut dağıtımları).

Görüntünün işletim sistemi sürümü desteklenmiyor

Azure Container Instances desteklemeyen bir görüntü belirtirseniz bir OsVersionNotSupported hata döndürülür. Hata aşağıdakine benzer; burada {0} dağıtmaya çalıştığınız görüntünün adıdır:

{
  "error": {
    "code": "OsVersionNotSupported",
    "message": "The OS version of image '{0}' is not supported."
  }
}

Bu hata en çok desteklenmeyen Semi-Annual Channel 1709 veya 1803 sürümünü temel alan Windows görüntüleri dağıtılırken karşılaşılır. Azure Container Instances'da desteklenen Windows görüntüleri için bkz. Sık sorulan sorular.

Görüntü çekilemiyor

Azure Container Instances başlangıçta görüntünüzü çekemezse, zaman için yeniden denenir. Görüntü çekme işlemi başarısız olursa, ACI sonunda dağıtımı başarısız olur ve bir Failed to pull image hata görebilirsiniz.

Bu sorunu çözmek için kapsayıcı örneğini silin ve dağıtımınızı yeniden deneyin. Görüntünün kayıt defterinde bulunduğundan ve görüntü adını doğru yazdığınızdan emin olun.

Görüntü çekilemiyorsa az container show çıkışında aşağıdaki gibi olaylar gösterilir:

"events": [
  {
    "count": 3,
    "firstTimestamp": "2017-12-21T22:56:19+00:00",
    "lastTimestamp": "2017-12-21T22:57:00+00:00",
    "message": "pulling image \"mcr.microsoft.com/azuredocs/aci-hellowrld\"",
    "name": "Pulling",
    "type": "Normal"
  },
  {
    "count": 3,
    "firstTimestamp": "2017-12-21T22:56:19+00:00",
    "lastTimestamp": "2017-12-21T22:57:00+00:00",
    "message": "Failed to pull image \"mcr.microsoft.com/azuredocs/aci-hellowrld\": rpc error: code 2 desc Error: image t/aci-hellowrld:latest not found",
    "name": "Failed",
    "type": "Warning"
  },
  {
    "count": 3,
    "firstTimestamp": "2017-12-21T22:56:20+00:00",
    "lastTimestamp": "2017-12-21T22:57:16+00:00",
    "message": "Back-off pulling image \"mcr.microsoft.com/azuredocs/aci-hellowrld\"",
    "name": "BackOff",
    "type": "Normal"
  }
],

Kaynak kullanılamıyor hatası

Azure'da değişen bölgesel kaynak yükü nedeniyle, bir kapsayıcı örneğini dağıtmaya çalışırken aşağıdaki hatayı alabilirsiniz:

The requested resource with 'x' CPU and 'y.z' GB memory is not available in the location 'example region' at this moment. Please retry with a different resource request or in another location.

Bu hata, dağıtmaya çalıştığınız bölgedeki ağır yük nedeniyle kapsayıcınız için belirtilen kaynakların o sırada ayrılamazsınız. Sorununuzu çözmeye yardımcı olması için aşağıdaki risk azaltma adımlarından birini veya daha fazlasını kullanın.

Kapsayıcı grubu çalışma zamanı sırasında karşılaşılan sorunlar

Kapsayıcı, açık kullanıcı girişi olmadan yalıtılmış bir yeniden başlatma işlemine sahip oldu

Kapsayıcı grubunun açık kullanıcı girişi olmadan yeniden başlatılmasına yönelik iki geniş kategori vardır. İlk olarak kapsayıcılar, bir uygulama işleminin kilitlenmesi nedeniyle yeniden başlatmalarla karşılaşabilir. ACI hizmeti, uygulamanın neden sorunlarla karşılaştığını belirlemek için Application Insights SDK' sı, kapsayıcı grubu ölçümleri ve kapsayıcı grubu günlükleri gibi gözlemlenebilirlik çözümlerinin uygulanmasını önerir. İkinci olarak, müşteriler bakım olayları nedeniyle ACI altyapısı tarafından başlatılan yeniden başlatmalarla karşılaşabilir. Uygulamanızın kullanılabilirliğini artırmak için, Application Gateway veya Traffic Manager gibi bir giriş bileşeninin arkasında birden çok kapsayıcı grubu çalıştırın.

Kapsayıcı sürekli çıkıyor ve yeniden başlatılıyor (uzun süre çalışan işlem yok)

Kapsayıcı grupları varsayılan olarak Alwaysyeniden başlatma ilkesine sahiptir, bu nedenle kapsayıcı grubundaki kapsayıcılar tamamlanmaya kadar çalıştırıldıktan sonra her zaman yeniden başlatılır. Görev tabanlı kapsayıcılar çalıştırmak istiyorsanız bunu OnFailure veya Never olarak değiştirmeniz gerekebilir. OnFailure'ı belirtirseniz ve yine de sürekli yeniden başlatmalar görürseniz, kapsayıcınızda yürütülen uygulama veya betikle ilgili bir sorun olabilir.

Kapsayıcı gruplarını uzun süre çalışan işlemler olmadan çalıştırırken Ubuntu veya Alpine gibi görüntülerle yinelenen çıkışlar ve yeniden başlatmalar görebilirsiniz. Kapsayıcının canlı tutma işlemi olmadığından EXEC aracılığıyla bağlanma işlemi çalışmaz. Bu sorunu çözmek için kapsayıcıyı çalışır durumda tutmak için kapsayıcı grubu dağıtımınıza aşağıdaki gibi bir başlat komutu ekleyin.

## Deploying a Linux container
az container create -g MyResourceGroup --name myapp --image ubuntu --command-line "tail -f /dev/null"
## Deploying a Windows container
az container create -g myResourceGroup --name mywindowsapp --os-type Windows --image mcr.microsoft.com/windows/servercore:ltsc2019
 --command-line "ping -t localhost"

Container Instances API ve Azure portal bir restartCount özellik içerir. Kapsayıcının yeniden başlatma sayısını denetlemek için Azure CLI'da az container show komutunu kullanabilirsiniz. Aşağıdaki örnek çıktıda (kısa bir süre için kesilmiştir), çıkışın sonunda özelliğini görebilirsiniz restartCount .

...
 "events": [
   {
     "count": 1,
     "firstTimestamp": "2017-11-13T21:20:06+00:00",
     "lastTimestamp": "2017-11-13T21:20:06+00:00",
     "message": "Pulling: pulling image \"myregistry.azurecr.io/aci-tutorial-app:v1\"",
     "type": "Normal"
   },
   {
     "count": 1,
     "firstTimestamp": "2017-11-13T21:20:14+00:00",
     "lastTimestamp": "2017-11-13T21:20:14+00:00",
     "message": "Pulled: Successfully pulled image \"myregistry.azurecr.io/aci-tutorial-app:v1\"",
     "type": "Normal"
   },
   {
     "count": 1,
     "firstTimestamp": "2017-11-13T21:20:14+00:00",
     "lastTimestamp": "2017-11-13T21:20:14+00:00",
     "message": "Created: Created container with id bf25a6ac73a925687cafcec792c9e3723b0776f683d8d1402b20cc9fb5f66a10",
     "type": "Normal"
   },
   {
     "count": 1,
     "firstTimestamp": "2017-11-13T21:20:14+00:00",
     "lastTimestamp": "2017-11-13T21:20:14+00:00",
     "message": "Started: Started container with id bf25a6ac73a925687cafcec792c9e3723b0776f683d8d1402b20cc9fb5f66a10",
     "type": "Normal"
   }
 ],
 "previousState": null,
 "restartCount": 0
...
}

Not

Linux dağıtımları için kapsayıcı görüntülerinin çoğu bash gibi bir kabuğu varsayılan komut olarak ayarlar. Kendi başına bir kabuk uzun süre çalışan bir hizmet olmadığından, varsayılan Her zaman yeniden başlatma ilkesiyle yapılandırıldığında bu kapsayıcılar hemen çıkar ve yeniden başlatma döngüsüne girer.

Kapsayıcının başlatılması uzun sürüyor

Azure Container Instances kapsayıcı başlatma süresine katkıda bulunan üç temel faktör şunlardır:

Windows görüntülerinde dikkat edilmesi gereken ek noktalar vardır.

Görüntü boyutu

Kapsayıcınızın başlatılması uzun sürüyor ancak sonunda başarılı olursa, kapsayıcı görüntünüzün boyutuna bakarak başlayın. Azure Container Instances kapsayıcı görüntünüzü isteğe bağlı olarak çektiğinden, gördüğünüz başlangıç süresi doğrudan boyutuyla ilgilidir.

Docker CLI'daki komutunu kullanarak docker images kapsayıcı görüntünüzün boyutunu görüntüleyebilirsiniz:

docker images
REPOSITORY                                    TAG       IMAGE ID        CREATED          SIZE
mcr.microsoft.com/azuredocs/aci-helloworld    latest    7367f3256b41    15 months ago    67.6MB

Görüntü boyutlarını küçük tutmanın anahtarı, son görüntünüzün çalışma zamanında gerekli olmayan hiçbir şey içermediğinden emin olmaktır. Bunu gerçekleştirmenin bir yolu çok aşamalı derlemeler kullanmaktır. Çok aşamalı derlemeler, son görüntünün derleme zamanında gerekli olan ek içeriklerden hiçbirini değil yalnızca uygulamanız için ihtiyacınız olan yapıtları içermesini kolaylaştırır.

Görüntü konumu

Görüntü çekme işleminin kapsayıcınızın başlangıç zamanı üzerindeki etkisini azaltmanın bir diğer yolu da kapsayıcı görüntüsünü kapsayıcı örneklerini dağıtmayı amaçladığınız bölgede Azure Container Registry barındırmaktır. Bu, kapsayıcı görüntüsünün ilerlemesi için gereken ağ yolunu kısaltır ve indirme süresini önemli ölçüde kısaltır.

Önbelleğe alınmış görüntüler

Azure Container Instances, , servercore:ltsc2019ve servercore:1809gibi nanoserver:1809yaygın Windows temel görüntüleri üzerinde oluşturulan görüntülerde kapsayıcı başlatma süresini hızlandırmaya yardımcı olan bir önbelleğe alma mekanizması kullanır. ve alpine:3.6 gibi ubuntu:1604 yaygın olarak kullanılan Linux görüntüleri de önbelleğe alınır. Hem Windows hem de Linux görüntüleri için etiketini kullanmaktan latest kaçının. Kılavuz için Container Registry'nin Görüntü etiketi en iyi yöntemlerini gözden geçirin. Önbelleğe alınmış görüntülerin ve etiketlerin güncel listesi için Önbelleğe Alınmış Görüntüleri Listele API'sini kullanın.

Not

Azure Container Instances'da Windows Server 2019 tabanlı görüntülerin kullanımı önizleme aşamasındadır.

Windows kapsayıcıları yavaş ağ hazırlığı

İlk oluşturma sırasında, Windows kapsayıcılarının 30 saniyeye (veya nadir durumlarda daha uzun) kadar gelen veya giden bağlantısı olmayabilir. Kapsayıcı uygulamanızın İnternet bağlantısına ihtiyacı varsa, 30 saniyenin İnternet bağlantısı kurmasına izin vermek için gecikme ve yeniden deneme mantığı ekleyin. İlk kurulumdan sonra kapsayıcı ağı uygun şekilde sürdürülmelidir.

Temel alınan Docker API'sine bağlanılamıyor veya ayrıcalıklı kapsayıcılar çalıştırılamıyor

Azure Container Instances, kapsayıcı gruplarını barındıran temel altyapıya doğrudan erişimi sunmaz. Bu kapsayıcı çalışma zamanına erişimi, düzenleme teknolojisini ve ayrıcalıklı kapsayıcı işlemlerini çalıştırmayı içerir. ACI tarafından desteklenen işlemleri görmek için REST başvuru belgelerini gözden geçirin. Eksik bir şey varsa ACI geri bildirim forumlarına bir istek gönderin.

Eşleşmeyen bağlantı noktalarından dolayı kapsayıcı grubu IP adresine erişilemiyor olabilir

Azure Container Instances, normal docker yapılandırmasında olduğu gibi bağlantı noktası eşlemeyi henüz desteklemez. Kapsayıcı grubunun IP adresinin erişilebilir olmadığını düşünüyorsanız, kapsayıcı görüntünüzü kapsayıcı grubunuzda özelliğiyle birlikte kullanıma sağladığınız bağlantı noktalarını dinleyecek şekilde yapılandırdığınızdan ports emin olun.

Azure Container Instances kapsayıcı görüntünüzde yapılandırdığınız bağlantı noktasını dinleyebildiğini onaylamak istiyorsanız, bağlantı noktasını kullanıma sunan görüntünün dağıtımını aci-helloworld test edin. Ayrıca uygulamayı çalıştırarak aci-helloworld bağlantı noktasında dinlemesini sağlayın. aci-helloworld dinleyen varsayılan bağlantı noktası 80'i geçersiz kılmak için isteğe bağlı bir ortam değişkeni PORT kabul eder. Örneğin, 9000 numaralı bağlantı noktasını test etmek için kapsayıcı grubunu oluştururken ortam değişkenini ayarlayın:

  1. Kapsayıcı grubunu 9000 numaralı bağlantı noktasını kullanıma sunulacak şekilde ayarlayın ve bağlantı noktası numarasını ortam değişkeninin değeri olarak geçirin. Örnek, Bash kabuğu için biçimlendirilmiştir. PowerShell veya Komut İstemi gibi başka bir kabuk tercih ediyorsanız değişken atamasını buna göre ayarlamanız gerekir.

    az container create --resource-group myResourceGroup \
    --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld \
    --ip-address Public --ports 9000 \
    --environment-variables 'PORT'='9000'
    
  2. komut çıkışında az container createkapsayıcı grubunun IP adresini bulun. ip değerini arayın.

  3. Kapsayıcı başarıyla sağlandıktan sonra tarayıcınızda kapsayıcı uygulamasının IP adresine ve bağlantı noktasına göz atın, örneğin: 192.0.2.0:9000.

    Web uygulaması tarafından görüntülenen "Azure Container Instances hoş geldiniz!" iletisini görmeniz gerekir.

  4. Kapsayıcıyla işiniz bittiğinde komutunu kullanarak kapsayıcıyı az container delete kaldırın:

    az container delete --resource-group myResourceGroup --name mycontainer
    

Gizli kapsayıcı grubu dağıtımları sırasında karşılaşılan sorunlar

Özel CCE ilkesi kullanılırken ilke hataları

Özel CCE ilkeleri Azure CLI confcom uzantısı oluşturulmalıdır. İlkeyi oluşturmadan önce ARM şablonunuzda belirtilen tüm özelliklerin geçerli olduğundan ve gizli bilgi işlem ilkesinde gösterilmesini beklediğiniz özelliklerle eşleştiğinden emin olun. Doğrulanması gereken bazı özellikler arasında kapsayıcı görüntüsü, ortam değişkenleri, birim bağlamaları ve kapsayıcı komutları bulunur.

İlkeden karma eksik

Azure CLI confcom uzantısı yerel makinenizde önbelleğe alınmış görüntüleri kullanır ve bu görüntüler uzaktan kullanılabilenlerle eşleşmeyebilir ve ilke doğrulandığında katman uyumsuzluğuna neden olabilir. Lütfen tüm eski görüntüleri kaldırdığınızdan ve en son kapsayıcı görüntülerini yerel ortamınıza çektiğinizden emin olun. En son SHA'ya sahip olduğunuzdan emin olduktan sonra CCE ilkesini yeniden oluşturmanız gerekir.

İşlem/kapsayıcı çıkış koduyla sonlandırıldı: 139

Bu çıkış kodu, Ubuntu Sürüm 22.04 temel görüntüsüyle ilgili sınırlamalardan kaynaklanmaktadır. Öneri, bu sorunu çözmek için farklı bir temel görüntü kullanmaktır.

Sonraki adımlar

Kapsayıcılarınızda hata ayıklamaya yardımcı olmak için kapsayıcı günlüklerini ve olaylarını almayı öğrenin.