Hazır olma yoklamalarını yapılandırma
Trafiğe hizmet veren kapsayıcılı uygulamalar için kapsayıcınızın gelen istekleri işlemeye hazır olduğunu doğrulamak isteyebilirsiniz. Azure Container Instances, kapsayıcınıza belirli koşullar altında erişilemeyecek yapılandırmalar eklemek için hazır olma yoklamalarını destekler. Hazırlık araştırması, Kubernetes hazırlık araştırması gibi davranır. Örneğin, bir kapsayıcı uygulamasının başlatma sırasında büyük bir veri kümesi yüklemesi gerekebilir ve bu süre boyunca istek almasını istemezsiniz.
Bu makalede, kapsayıcının yalnızca yoklama başarılı olduğunda trafik alması için hazır olma araştırması içeren bir kapsayıcı grubunun nasıl dağıtılacağı açıklanmaktadır.
Azure Container Instances, iyi durumda olmayan bir kapsayıcının otomatik olarak yeniden başlatılmasına neden olacak şekilde yapılandırabileceğiniz canlılık yoklamalarını da destekler.
YAML yapılandırması
Örneğin, hazır olma yoklaması içeren aşağıdaki kod parçacığına sahip bir dosya oluşturun readiness-probe.yaml
. Bu dosya, küçük bir web uygulaması çalıştıran bir kapsayıcıdan oluşan bir kapsayıcı grubu tanımlar. Uygulama genel mcr.microsoft.com/azuredocs/aci-helloworld
görüntüden dağıtılır. Bu kapsayıcılı uygulama, Azure CLI'yi ve diğer hızlı başlangıçları kullanarak Azure'da kapsayıcı örneği dağıtma bölümünde de gösterilmiştir.
apiVersion: 2019-12-01
location: eastus
name: readinesstest
properties:
containers:
- name: mycontainer
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld
command:
- "/bin/sh"
- "-c"
- "node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait"
ports:
- port: 80
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
readinessProbe:
exec:
command:
- "cat"
- "/tmp/ready"
periodSeconds: 5
osType: Linux
restartPolicy: Always
ipAddress:
type: Public
ports:
- protocol: tcp
port: '80'
tags: null
type: Microsoft.ContainerInstance/containerGroups
Başlat komutu
Dağıtım, kapsayıcı ilk kez çalışmaya başladığında çalışan bir başlangıç komutu tanımlayan bir command
özellik içerir. Bu özellik bir dizi dizeyi kabul eder. Bu komut, web uygulamasının çalıştığı ancak kapsayıcının hazır olmadığı bir zamanın benzetimini oluşturur.
İlk olarak, bir kabuk oturumu başlatır ve web uygulamasını başlatmak için bir node
komut çalıştırır. Ayrıca 240 saniye boyunca uyku moduna geçmek için bir komut başlatır ve ardından dizinin içinde /tmp
adlı ready
bir dosya oluşturur:
node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait
Hazırlık komutu
Bu YAML dosyası, hazır olma denetimi işlevi gören bir hazırlık komutunu destekleyen bir readinessProbe
exec
tanımlar. Bu örnek hazır olma komutu, dizinindeki dosyanın varlığı ready
için sınar /tmp
.
ready
Dosya mevcut olmadığında, hazır olma komutu sıfır olmayan bir değerle çıkar; kapsayıcı çalışmaya devam eder ancak erişilemez. Komut çıkış kodu 0 ile başarıyla çıktığında kapsayıcıya erişilmeye hazır olur.
periodSeconds
özelliği, hazırlık komutunun 5 saniyede bir yürütülmesi gerektiğini belirtir. Hazır olma yoklaması, kapsayıcı grubunun ömrü boyunca çalışır.
Örnek dağıtım
Önceki YAML yapılandırmasına sahip bir kapsayıcı grubu dağıtmak için aşağıdaki komutu çalıştırın:
az container create --resource-group myResourceGroup --file readiness-probe.yaml
Hazırlık denetimlerini görüntüleme
Bu örnekte, ilk 240 saniye içinde dosyanın varlığını denetlediğinde ready
hazır olma komutu başarısız olur. Durum kodu, kapsayıcının hazır olmadığını belirten sinyaller döndürdü.
Bu olaylar Azure portalından veya Azure CLI'dan görüntülenebilir. Örneğin portal, hazır olma komutunun başarısız olduğu durumda türdeki Unhealthy
olayların tetiklenmiş olduğunu gösterir.
Kapsayıcı hazırlığını doğrulama
Kapsayıcıyı başlattıktan sonra başlangıçta erişilebilir olmadığını doğrulayabilirsiniz. Sağlamadan sonra kapsayıcı grubunun IP adresini alın:
az container show --resource-group myResourceGroup --name readinesstest --query "ipAddress.ip" --out tsv
Hazırlık yoklaması başarısız olurken siteye erişmeyi deneyin:
wget <ipAddress>
Çıktıda başlangıçta siteye erişilemiyor:
wget 192.0.2.1
--2019-10-15 16:46:02-- http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...
240 saniye sonra hazır olma komutu başarılı olur ve kapsayıcının hazır olduğunu gösterir. Şimdi komutu çalıştırdığınızda wget
başarılı olur:
wget 192.0.2.1
--2019-10-15 16:46:02-- http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...200 OK
Length: 1663 (1.6K) [text/html]
Saving to: ‘index.html.1’
index.html.1 100%[===============================================================>] 1.62K --.-KB/s in 0s
2019-10-15 16:49:38 (113 MB/s) - ‘index.html.1’ saved [1663/1663]
Kapsayıcı hazır olduğunda, web tarayıcısı kullanarak IP adresine göz atarak web uygulamasına da erişebilirsiniz.
Not
Hazır olma yoklaması, kapsayıcı grubunun ömrü boyunca çalışmaya devam eder. Hazır olma komutu daha sonra başarısız olursa kapsayıcı yeniden erişilemez hale gelir.
Sonraki adımlar
Hazırlık araştırması, bağımlı kapsayıcılardan oluşan çok kapsayıcılı grupları içeren senaryolarda yararlı olabilir. Çok kapsayıcılı senaryolar hakkında daha fazla bilgi için bkz . Azure Container Instances'ta kapsayıcı grupları.