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:1809
kullanır.servercore:1809
servercore: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:
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'
komut çıkışında
az container create
kapsayıcı grubunun IP adresini bulun. ip değerini arayın.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.
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.