Denetim yükseltme hatası davranışı
Genel bakış
Bu kılavuzda, kapsayıcı ağ işlevleri (CNFs) için Azure Operatör Hizmet Yöneticisi (AOSM) yükseltme hatası davranış özellikleri açıklanmaktadır. Bu özellikler, AOSM güvenli yükseltme uygulamaları girişiminin bir parçası olarak, hata durumunda duraklama ve hata durumunda geri alma ile başlangıç noktasına geri dönme ile daha hızlı yeniden denemeler arasında bir seçim sunar.
Hatada duraklatma
AOSM kullanan tüm yükseltmeler bir site ağ hizmeti (SNS) hesaplamasıyla başlar. hesaplama işlemi, ağ işlevi tasarım sürümünde (NFDV) bulunan ağ işlevi uygulamalarını (NfApps) işler. reput işlemi aşağıdaki varsayılan mantığı uygular:
- NfApps, updateDependsOn sıralamasından sonra veya göründükleri sıralı sırada işlenir.
- "applicationEnabled" parametresi devre dışı olarak ayarlanmış NfApps atlanır.
- NFApps mevcut, ancak yeni NFDV tarafından başvurulmuyor silinir.
- NfApp yükseltmelerinden herhangi biri başarısız olursa ve geri alma dikkate alınırsa yürütme sırası duraklatılır.
- Hata, NF kaynağını başarısız durumda bırakır.
AOSM, hatada duraklatma ile testOptions, installOptions veya upgradeOptions parametreleri aracılığıyla yalnızca başarısız olan NfApp'i geri alır. Başarısız NfApp'e devam eden NfApp'lerde hiçbir işlem yapılmaz. Bu yöntem, son kullanıcının başarısız NfApp sorunlarını gidermesine ve yükseltmeyi bu noktadan sonra yeniden başlatmasına olanak tanır. Varsayılan davranış olarak, bu yöntem en verimli yöntemdir, ancak karma sürüm durumundayken ağ işlevi (NF) tutarsızlıklarına neden olabilir.
Hatada geri alma
Eşleşmeyen NfApp sürümleri riskini gidermek için AOSM artık hata durumunda NF düzeyi geri almayı destekliyor. Bu seçenek etkinleştirildiğinde, bir NfApp işlemi başarısız olursa hem başarısız NfApp hem de tüm önceki tamamlanan NfApp'ler ilk sürüm durumuna geri döndürülebilir. Bu yöntem, NF'nin NfApp sürümü uyuşmazlıklarına maruz kalma süresini en aza indirir veya ortadan kaldırır. İsteğe bağlı hata geri alma özelliği aşağıdaki gibi çalışır:
- Kullanıcı bir sSNS hesaplama işlemi başlatır ve hata durumunda geri almayı etkinleştirir.
- Geçerli NfApp sürümlerinin anlık görüntüsü yakalanır ve depolanır.
- Anlık görüntü, başarıyla tamamlanan eylemleri tersine çevirmek için gerçekleştirilir tek tek NfApp eylemlerini belirlemek için kullanılır.
- Silinen bileşenlerde "helm yükleme" eylemi,
- Yükseltilmiş bileşenlerde "helm geri alma" eylemi,
- Yeni yüklenen bileşenlerde "helm silme" eylemi
- NfApp hatası oluşur, AOSM NfApps'i yükseltmeden önce anlık görüntü sürümü durumuna geri yükler ve en son eylemler ilk olarak geri döndürülür.
Not
- Kullanıcı hata durumunda geri almayı etkinleştirmezse AOSM anlık görüntü oluşturmaz.
- Hatada geri alma yalnızca başarıyla tamamlanan NFApps için geçerlidir.
- Başarısız NfApp geri almayı denetlemek için testOptions, installOptions veya upgradeOptions parametrelerini kullanın.
AOSM, ilgili sonuçlara göre aşağıdaki işlem durumunu ve iletileri döndürür:
- Upgrade Succeeded
- Provisioning State: Succeeded
- Message: <empty>
- Upgrade Failed, Rollback Succeeded
- Provisioning State: Failed
- Message: Application(<ComponentName>) : <Failure Reason>; Rollback succeeded
- Upgrade Failed, Rollback Failed
- Provisioning State: Failed
- Message: Application(<ComponentName>) : <Failure reason>; Rollback Failed (<RollbackComponentName>) : <Rollback Failure reason>
Geri alma işlemini hata durumunda yapılandırma
Hata davranışını denetlemek için en esnek yöntem, NF yükündeki roleOverrideValues aracılığıyla yapılandırma grubu değeri (CGV) denetimine izin vermek için yeni bir yapılandırma grubu şeması (CGS) parametresini (rollbackEnabled) genişletmektir. İlk olarak CGS parametresini tanımlayın:
{
"description": "NF configuration",
"type": "object",
"properties": {
"nfConfiguration": {
"type": "object",
"properties": {
"rollbackEnabled": {
"type": "boolean"
}
},
"required": [
"rollbackEnabled"
]
}
}
}
Not
- nfConfiguration roleOverrideValues parametresi aracılığıyla sağlanmadıysa, varsayılan olarak geri alma devre dışı bırakılır.
Yeni rollbackEnable parametresi tanımlandığında İşleç artık NF hesaplama yükünün bir parçası olarak roleOverrideValues altında bir çalışma zamanı değeri sağlayabilir.
example:
{
"location": "eastus",
"properties": {
// ...
"roleOverrideValues": [
"{\"nfConfiguration\":{\"rollbackEnabled\":true}}",
"{\"name\":\"nfApp1\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\" : \"Disabled\"}}",
"{\"name\":\"nfApp2\",\"deployParametersMappingRuleProfile\":{\"applicationEnablement\" : \"Disabled\"}}",
//... other nfapps overrides
]
}
}
Not
- Her roleOverrideValues girdisi, NfAapps'in varsayılan davranışını geçersiz kılar.
- roleOverrideValues içinde birden çok nfConfiguration girdisi bulunursa, NF hesaplaması hatalı istek olarak döndürülür.
Hata durumunda geri alma sorunlarını giderme
Pod durumlarını anlama
Farklı pod durumlarını anlamak, etkili sorun giderme için çok önemlidir. En yaygın pod durumları şunlardır:
- Beklemede: Kubernetes tarafından pod zamanlaması devam ediyor.
- Çalışıyor: Poddaki tüm kapsayıcılar çalışıyor ve iyi durumda.
- Başarısız: Poddaki bir veya daha fazla kapsayıcı sıfır olmayan bir çıkış koduyla sonlandırıldı.
- CrashLoopBackOff: Pod içindeki bir kapsayıcı sürekli kilitleniyor ve Kubernetes bunu yeniden başlatamıyor.
- ContainerCreating: Kapsayıcı oluşturma işlemi kapsayıcı çalışma zamanı tarafından devam ediyor.
Pod durumunu ve günlüklerini denetleme
İlk olarak kubectl komutunu kullanarak pod durumunu ve günlüklerini denetleyerek başlayın:
$ kubectl get pods
$ kubectl logs <pod-name>
Get pods komutu, geçerli ad alanında bulunan tüm podları ve bunların geçerli durumlarını listeler. Logs komutu belirli bir pod için günlükleri alır ve hataları veya özel durumları incelemenize olanak sağlar. Ağ sorunlarını gidermek için aşağıdaki komutları kullanın:
$ kubectl get services
$ kubectl describe service <service-name>
Get services komutu geçerli ad alanında tüm hizmetleri görüntüler. komutu, ilişkili uç noktalar ve ilgili hata iletileri dahil olmak üzere belirli bir hizmetle ilgili ayrıntıları sağlar. PVC'lerle ilgili sorunlarla karşılaşıyorsanız, hata ayıklamak için aşağıdaki komutları kullanabilirsiniz:
$ kubectl get persistentvolumeclaims
$ kubectl describe persistentvolumeclaims <pvc-name>
"get persistentvolumeclaims" komutu geçerli ad alanında yer alan tüm PVC'leri listeler. describe komutu, durum, ilişkili depolama sınıfı ve ilgili olaylar veya hatalar dahil olmak üzere belirli bir PVC hakkında ayrıntılı bilgi sağlar.