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

Bu makalede kapsayıcıları yönetme veya Azure Container Instances'a dağıtmayla ilgili yaygın sorunların nasıl giderılacağı gösterilmektedir. Ayrıca bkz. Sık sorulan sorular.

Daha fazla desteğe ihtiyacınız varsa Bkz. Azure portalında sağlanan Yardım + destek seçenekleri.

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ğıdaki tabloda kapsayıcı grubu özelliklerine özgü gereksinimler gösterilmektedir. 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 Length 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 herhangi bir 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ındaki tamsayı <port-number> 443
DNS ad etiketi 5-63 Büyük-küçük harfe duyarsız İlk veya son karakter dışında herhangi bir 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. Ardışık iki kısa çizgi içeremez. <name> batch-output-volume

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

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

Azure Container Instances'ın desteklemediği 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 Altı Aylık Kanal 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'ta 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ği 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 anda ayrılamazsınız. Sorununuzu çözmeye yardımcı olmak için aşağıdaki risk azaltma adımlarından birini veya daha fazlasını kullanın.

  • Kapsayıcı dağıtım ayarlarınızın Azure Container Instances için Bölge kullanılabilirliği bölümünde tanımlanan parametrelere uygun olduğunu doğrulayın
  • Kapsayıcı için daha düşük CPU ve bellek ayarları belirtme
  • Farklı bir Azure bölgesine dağıtma
  • Daha sonra dağıtma

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 neden yeniden başlatılabileceğinin iki geniş kategorisi vardır. İlk olarak, kapsayıcılar bir uygulama işlemi 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. İkincisi, 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 Always yeniden 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ırdığınızda, 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 örnek gibi bir başlangıç 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'sinde ve Azure portalında bir restartCount özellik bulunur. Kapsayıcının yeniden başlatma sayısını denetlemek için Azure CLI'da az container show komutunu kullanabilirsiniz. Kısa olması için kesilen aşağıdaki örnek çıktıda, çıkışın sonunda özelliğini görürsünüz 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. Tek 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'ta kapsayıcı başlatma süresine katkıda bulunan üç birincil faktör şunlardır:

Windows görüntülerinin dikkate alınması gereken başka noktalar da vardır.

Görüntü boyutu

Kapsayıcınızın başlatılması uzun sürüyorsa 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çermemesini sağlamaktır. Bunu yapmak için çok aşamalı derlemeler gerekir. Ç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ıç süresi üzerindeki etkisini azaltmanın bir diğer yolu da kapsayıcı görüntüsünü, kapsayıcı örneklerini dağıtmayı planladığınız bölgede Azure Container Registry'de 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, , ve gibi yaygın Windows temel görüntüleri üzerinde oluşturulan görüntüler için kapsayıcı başlatma süresini hızlandırmaya yardımcı olan bir önbelleğe alma mekanizması nanoserver:1809kullanır.servercore:1809servercore:ltsc2019 ve gibi ubuntu:1604 alpine:3.6 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'ta Windows Server 2019 tabanlı görüntülerin kullanımı önizleme aşamasındadır.

Windows kapsayıcıları ağ hazırlığını yavaşlatır

İlk oluşturma sırasında, Windows kapsayıcılarının 30 saniyeye kadar (veya nadir durumlarda daha uzun) 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şim sağlamaz. 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'nin hangi işlemleri desteklediğini görmek için REST başvuru belgelerine bakın. 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ı gibi bağlantı noktası eşlemesini 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 kullanıma sağladığınız bağlantı noktalarının aynısını özelliğiyle dinleyecek şekilde yapılandırdığınızdan ports emin olun.

Azure Container Instances'ın kapsayıcı görüntünüzde yapılandırdığınız bağlantı noktasını dinleyebileceğ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 , dinlediğinden 80 numaralı varsayılan bağlantı noktasını 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'a 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ı

Azure CLI confcom uzantısı özel CCE ilkeleri oluşturulmalıdır. İlkeyi oluşturmadan önce ARM şablonunuzda belirtilen tüm özelliklerin geçerli olduğundan ve gizli bilgi işlem ilkesinde temsil edilmesini 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 konfederasyon uzantısı, yerel makinenizde uzaktan kullanılabilenlerle eşleşmeyen önbelleğe alınmış görüntüleri kullanır ve bu da ilke doğrulandığında katman uyumsuzluğuna neden olabilir. 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 dolayı oluşur. Ö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.