Aracılığıyla paylaş


Kubernetes İşlem sorunlarını giderme

Bu makalede, Kubernetes işlemindeki yaygın iş yükü hatalarını gidermeyi öğreneceksiniz. Yaygın hatalar eğitim işleri ve uç nokta hatalarıdır.

Çıkarım kılavuzu

Kubernetes işlemdeki yaygın Kubernetes uç nokta hataları iki kapsama ayrılır: işlem kapsamı ve küme kapsamı. İşlem kapsamı hataları, işlem hedefi bulunamadı veya işlem hedefinin erişilebilir olmadığı gibi işlem hedefiyle ilgilidir. Küme kapsamı hataları, kümenin kendisine ulaşılamıyor veya küme bulunamıyor gibi temel Kubernetes kümesiyle ilgilidir.

Kubernetes işlem hataları

Gerçek zamanlı model çıkarımı için çevrimiçi uç noktalar ve çevrimiçi dağıtımlar oluşturmak için Kubernetes işlemini kullanırken karşılaşabileceğiniz işlem kapsamında yaygın hata türleri aşağıdadır. Yönergeler için bağlantılı bölümleri izleyerek sorun çekebilirsiniz:

HATA: GenericComputeError

Hata iletisi şöyledir:

Failed to get compute information.

Sistem Kubernetes kümesinden işlem bilgilerini alamadığında bu hata oluşmalıdır. Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

  • Kubernetes kümesi durumunu denetleyin. Küme çalışmıyorsa, önce kümeyi başlatmanız gerekir.
  • Kubernetes kümesi durumunu denetleyin.
    • Kümeye ulaşılamıyorsa, herhangi bir sorun için küme sistem durumu denetimi raporunu görüntüleyebilirsiniz.
    • İşlem durumunu denetlemek için çalışma alanı portalınıza gidebilirsiniz.
  • Örnek türlerinin doğru bilgi olup olmadığını denetleyin. Desteklenen örnek türlerini Kubernetes işlem belgelerinden denetleyebilirsiniz.
  • varsa işlemi ayırmayı ve çalışma alanına yeniden eklemeyi deneyin.

Not

Yeniden takarak hataları çekmek için lütfen daha önce ayrılmış işlemle aynı yapılandırmayla (aynı işlem adı ve ad alanı gibi) yeniden bağlanmayı garanti edin, aksi takdirde başka hatalarla karşılaşabilirsiniz.

HATA: ComputeNotFound

Hata iletisi aşağıdaki gibidir:

Cannot find Kubernetes compute.

Bu hata şu durumlarda oluşmalıdır:

  • Sistem, yeni çevrimiçi uç nokta/dağıtım oluştururken/güncelleştirirken işlem bulamıyor.
  • Mevcut çevrimiçi uç noktaların/dağıtımların işlemleri kaldırıldı.

Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

  • Uç noktayı ve dağıtımı yeniden oluşturmayı deneyin.
  • İşlemi ayırmayı ve çalışma alanına yeniden eklemeyi deneyin. Yeniden ekleme ile ilgili daha fazla nota dikkat edin.

HATA: ComputeNotAccessible

Hata iletisi aşağıdaki gibidir:

The Kubernetes compute is not accessible.

Çalışma alanı MSI'sinin (yönetilen kimlik) AKS kümesine erişimi olmadığında bu hata oluşmalıdır. MSI çalışma alanının AKS'ye erişimi olup olmadığını denetleyebilirsiniz ve erişilmediyse, erişimi ve kimliği yönetmek için bu belgeyi izleyebilirsiniz.

HATA: InvalidComputeInformation

Hata iletisi aşağıdaki gibidir:

The compute information is invalid.

Kubernetes kümenize model dağıtırken bir işlem hedefi doğrulama işlemi vardır. İşlem bilgileri geçersiz olduğunda bu hata oluşmalıdır. Örneğin, işlem hedefi bulunamadı veya Azure Machine Learning uzantısının yapılandırması Kubernetes kümenizde güncelleştirildi.

Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

  • Kullandığınız işlem hedefinin doğru olup olmadığını ve çalışma alanınızda mevcut olup olmadığını denetleyin.
  • İşlemi ayırmayı ve çalışma alanına yeniden eklemeyi deneyin. Yeniden ekleme ile ilgili daha fazla nota dikkat edin.

HATA: InvalidComputeNoKubernetesConfiguration

Hata iletisi aşağıdaki gibidir:

The compute kubeconfig is invalid.

Bu hata, sistem kümeye bağlanmak için aşağıdaki gibi bir yapılandırma bulamadıysa oluşmalıdır:

  • Arc-Kubernetes kümesi için Azure Relay yapılandırması bulunamaz.
  • AKS kümesi için aks yapılandırması bulunamıyor.

Kümenizdeki işlem bağlantısının yapılandırmasını yeniden derlemek için, işlemi ayırmayı ve çalışma alanına yeniden eklemeyi deneyebilirsiniz. Yeniden ekleme ile ilgili daha fazla nota dikkat edin.

Kubernetes kümesi hatası

Aşağıda, kubernetes işlemini kullanarak gerçek zamanlı model çıkarımı için çevrimiçi uç noktalar ve çevrimiçi dağıtımlar oluştururken karşılaşabileceğiniz küme kapsamındaki hata türlerinin bir listesi yer almaktadır. Bu, yönergeleri izleyerek çekme konusunda sorun yaşayabilirsiniz:

HATA: GenericClusterError

Hata iletisi aşağıdaki gibidir:

Failed to connect to Kubernetes cluster: <message>

Sistem bilinmeyen bir nedenle Kubernetes kümesine bağlanamadığında bu hata oluşmalıdır. Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

AKS kümeleri için:

  • AKS kümesinin kapatılıp kapatılmadığını denetleyin.
    • Küme çalışmıyorsa, önce kümeyi başlatmanız gerekir.
  • Yetkili IP aralıklarını kullanarak AKS kümesinin seçili ağı etkinleştirip etkinleştirmediğini denetleyin.
    • AKS kümesi yetkili IP aralıklarını etkinleştirdiyse AKS kümesi için tüm Azure Machine Learning denetim düzlemi IP aralıklarının etkinleştirildiğinden emin olun. Daha fazla bilgi için bu belgeyi görebilirsiniz.

AKS kümesi veya Azure Arc özellikli kubernetes kümesi için:

  • Kümede komutunu çalıştırarak kubectl Kubernetes API sunucusunun erişilebilir olup olmadığını denetleyin.

HATA: ClusterNotReachable

Hata iletisi aşağıdaki gibidir:

The Kubernetes cluster is not reachable. 

Sistem bir kümeye bağlanamıyorsa bu hata oluşmalıdır. Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

AKS kümeleri için:

  • AKS kümesinin kapatılıp kapatılmadığını denetleyin.
    • Küme çalışmıyorsa, önce kümeyi başlatmanız gerekir.

AKS kümesi veya Azure Arc özellikli kubernetes kümesi için:

  • Kümede komutunu çalıştırarak kubectl Kubernetes API sunucusunun erişilebilir olup olmadığını denetleyin.

HATA: ClusterNotFound

Hata iletisi aşağıdaki gibidir:

Cannot found Kubernetes cluster. 

Sistem AKS/Arc-Kubernetes kümesini bulamadıklarında bu hatanın oluşması gerekir.

Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

  • İlk olarak, Kubernetes küme kaynağının hala mevcut olup olmadığını ve normal çalışıp çalışmadığını doğrulamak için Azure portalında küme kaynak kimliğini denetleyin.
  • Küme varsa ve çalışıyorsa işlemi çalışma alanına ayırmayı ve yeniden eklemeyi deneyebilirsiniz. Yeniden ekleme ile ilgili daha fazla nota dikkat edin.

İpucu

Kubernetes çevrimiçi uç noktalarını ve dağıtımlarını oluştururken/güncelleştirirken sık karşılaşılan hatalarla ilgili daha fazla sorun giderme kılavuzuna Çevrimiçi uç noktaların sorunlarını giderme bölümünden ulaşabilirsiniz.

Kimlik hatası

HATA: RefreshExtensionIdentityNotSet

Uzantı yüklendiğinde ancak uzantı kimliği doğru atanmadığında bu hata oluşur. Uzantıyı düzeltmek için yeniden yüklemeyi deneyebilirsiniz.

Bu hatanın yalnızca yönetilen kümeler için olduğuna dikkat edin

sslCertPemFile ve sslKeyPemFile'ın doğru olup olmadığını denetleme

Bilinen hataların ortaya çıkarılabilmesi için komutlarını kullanarak sertifikanız ve anahtarınız için bir temel denetim çalıştırabilirsiniz. İkinci komutun sizden parola istemeden "RSA anahtarı tamam" döndürmesini bekleyin.

openssl x509 -in cert.pem -noout -text
openssl rsa -in key.pem -noout -check

SslCertPemFile ve sslKeyPemFile değerlerinin eşleşip eşleşmediğini doğrulamak için komutları çalıştırın:

openssl x509 -in cert.pem -noout -modulus | md5sum
openssl rsa -in key.pem -noout -modulus | md5sum

sslCertPemFile için genel sertifikadır. Aşağıdaki sertifikaları içeren sertifika zincirini içermeli ve sunucu sertifikası, ara CA sertifikası ve kök CA sertifikası sırasında olmalıdır:

  • Sunucu sertifikası: sunucu, TLS el sıkışması sırasında istemciye sunar. Sunucunun ortak anahtarını, etki alanı adını ve diğer bilgileri içerir. Sunucu sertifikası, sunucunun kimliği için kesen bir ara sertifika yetkilisi (CA) tarafından imzalanır.
  • Ara CA sertifikası: ara CA, sunucu sertifikasını imzalama yetkisini kanıtlamak için istemciye sunar. Ara CA'nın ortak anahtarını, adını ve diğer bilgilerini içerir. Ara CA sertifikası, ara CA'nın kimliği için kesen bir kök CA tarafından imzalanır.
  • Kök CA sertifikası: kök CA, ara CA sertifikasını imzalama yetkisini kanıtlamak için istemciye sunar. Kök CA'nın ortak anahtarını, adını ve diğer bilgilerini içerir. Kök CA sertifikası otomatik olarak imzalanır ve istemci tarafından güvenilen bir sertifikadır.

Eğitim kılavuzu

Eğitim işi çalışırken, iş durumunu çalışma alanı portalında de kontrol edebilirsiniz. birden çok kez yeniden denenen iş gibi anormal bir iş durumuyla karşılaştığınızda veya iş başlatma durumunda takıldıysa, hatta iş sonunda başarısız olduysa, sorunu gidermek için kılavuzu izleyebilirsiniz.

İş hata ayıklamayı yeniden deneme

Kümede çalışan eğitim işi podu düğüm OOM'a çalışan düğüm (bellek yetersiz) nedeniyle sonlandırıldıysa, iş otomatik olarak başka bir kullanılabilir düğüme yeniden denenecek .

İşin kök nedeninin hatalarını daha fazla ayıklamak için çalışma alanı portalına gidip iş yeniden deneme günlüğünü de kontrol edebilirsiniz.

  • Her yeniden deneme günlüğü, "retry-retry number>" (örneğin: retry-001<) biçiminde yeni bir günlük klasörüne kaydedilir.

Ardından yeniden deneme işinin hangi düğümde çalıştığını bulmak için yeniden deneme iş düğümü eşleme bilgilerini alabilirsiniz.

Screenshot of adding a new extension to the Azure Arc-enabled Kubernetes cluster from the Azure portal.

system_logs klasörünün altındaki amlarc_cr_bootstrap.log iş düğümü eşleme bilgilerini alabilirsiniz.

İş podunun üzerinde çalıştığı düğümün ana bilgisayar adı bu günlükte gösterilir, örneğin:

++ echo 'Run on node: ask-agentpool-17631869-vmss0000"

"ask-agentpool-17631869-vmss00000" AKS kümenizde bu işi çalıştıran düğüm ana bilgisayar adını temsil eder. Daha sonra daha fazla araştırma için düğüm durumunu denetlemek için kümeye erişebilirsiniz.

İş podu Init durumunda takılıyor

İş beklediğinizden daha uzun çalışıyorsa ve iş podlarınızın bu uyarıyla Unable to attach or mount volumes: *** failed to get plugin from volumeSpec for volume ***-blobfuse-*** err=no volume plugin matchedInit durumunda takıldığını fark ederseniz, Azure Machine Learning uzantısı giriş verileri için indirme modunu desteklemediğinden sorun oluşabilir.

Bu sorunu çözmek için giriş verileriniz için bağlama moduna geçin.

Yaygın iş hatası hataları

Aşağıda, bir eğitim işi oluşturmak ve yürütmek için Kubernetes işlemini kullanırken karşılaşabileceğiniz yaygın hata türlerinin bir listesi yer almaktadır. Yönergeleri izleyerek çekim yaparken sorun yaşayabilirsiniz:

İş başarısız oldu. 137

Hata iletisi şuysa:

Azure Machine Learning Kubernetes job failed. 137:PodPattern matched: {"containers":[{"name":"training-identity-sidecar","message":"Updating certificates in /etc/ssl/certs...\n1 added, 0 removed; done.\nRunning hooks in /etc/ca-certificates/update.d...\ndone.\n * Serving Flask app 'msi-endpoint-server' (lazy loading)\n * Environment: production\n   WARNING: This is a development server. Do not use it in a production deployment.\n   Use a production WSGI server instead.\n * Debug mode: off\n * Running on http://127.0.0.1:12342/ (Press CTRL+C to quit)\n","code":137}]}

Ara sunucu ayarınızı denetleyin ve 127.0.0.1'in bu ağ yapılandırmasına uyarak kullanırken az connectedk8s connect proxy-skip-range'e eklenip eklenmediğini denetleyin.

İş başarısız oldu. E45004

Hata iletisi şuysa:

Azure Machine Learning Kubernetes job failed. E45004:"Training feature is not enabled, please enable it when install the extension."

Azure Machine Learning uzantısı yüklemesini yaparken ayar yapıp yapmadığınızı enableTraining=True denetleyin. Daha fazla ayrıntı aks veya Arc Kubernetes kümesinde Azure Machine Learning uzantısını dağıtma sayfasında bulunabilir

İş başarısız oldu. 400

Hata iletisi şuysa:

Azure Machine Learning Kubernetes job failed. 400:{"Msg":"Encountered an error when attempting to connect to the Azure Machine Learning token service","Code":400}

Ağ ayarlarınızı denetlemek için Özel Bağlantı sorun giderme bölümünü izleyebilirsiniz.

Bir hesap anahtarı veya SAS belirteci verin

Docker görüntüsü için Azure Container Registry'ye (ACR) erişmeniz ve eğitim verileri için Depolama Hesabına erişmeniz gerekiyorsa, işlem yönetilen kimlikle belirtilmediğinde bu sorun ortaya çıkmalıdır.

Docker görüntüleri için bir Kubernetes işlem kümesinden Azure Container Registry'ye (ACR) erişmek veya eğitim verileri için bir depolama hesabına erişmek için Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliğin etkinleştirildiği Kubernetes işlemini eklemeniz gerekir.

Yukarıdaki eğitim senaryosunda bu bilgi işlem kimliği, Kubernetes işleminin çalışma alanına bağlı ARM kaynağı ile Kubernetes bilgi işlem kümesi arasında iletişim kurmak için kimlik bilgisi olarak kullanılması için gereklidir. Bu nedenle bu kimlik olmadan eğitim işi başarısız olur ve eksik hesap anahtarını veya sas belirtecini bildirir. Depolama hesabına erişin, örneğin Kubernetes işleminize yönetilen kimlik belirtmezseniz, iş aşağıdaki hata iletisiyle başarısız olur:

Unable to mount data store workspaceblobstore. Give either an account key or SAS token

Bunun nedeni, hiçbir kimlik bilgisi olmayan makine öğrenmesi çalışma alanı varsayılan depolama hesabının Kubernetes işlemdeki eğitim işleri için erişilebilir olmamasıdır.

Bu sorunu azaltmak için, işlem ekleme adımında işlem için Yönetilen Kimlik atayabilir veya yönetilen kimliği eklendikten sonra işlem için atayabilirsiniz. İşlem hedefine Yönetilen Kimlik Atama bölümünde daha fazla ayrıntı bulunabilir.

AzureBlob yetkilendirmesi başarısız oldu

Kubernetes işlemindeki eğitim işlerinizde veri yükleme veya indirme için AzureBlob'a erişmeniz gerekiyorsa, iş aşağıdaki hata iletisiyle başarısız olur:

Unable to upload project files to working directory in AzureBlob because the authorization failed. 

Bunun nedeni, iş proje dosyalarını AzureBlob'a yüklemeye çalıştığında yetkilendirmenin başarısız olmasıdır. Sorunu gidermek için aşağıdaki öğeleri de kontrol edebilirsiniz:

  • Depolama hesabının "Güvenilen hizmet listesindeki Azure hizmetlerinin bu depolama hesabına erişmesine izin ver" özel durumlarını etkinleştirdiğinden ve çalışma alanının kaynak örnekleri listesinde olduğundan emin olun.
  • Çalışma alanının sistem tarafından atanmış bir yönetilen kimliğe sahip olduğundan emin olun.

Kubernetes kümesindeki bir podda oturum açıp ilgili ağ ayarlarını denetleyerek özel bağlantı kurulumunu denetlemek için yöntemini kullanabiliriz.

  • Azure portalında çalışma alanı kimliğini bulun veya komut satırında çalıştırarak az ml workspace show bu kimliği alın.

  • tarafından kubectl get po -n azureml -l azuremlappname=azureml-feçalıştırılan tüm azureml-fe podlarını göster.

  • herhangi bir çalıştırıldığında oturum açın kubectl exec -it -n azureml {scorin_fe_pod_name} bash.

  • Küme proxy kullanmıyorsa komutunu çalıştırın nslookup {workspace_id}.workspace.{region}.api.azureml.ms. Sanal ağdan çalışma alanına özel bağlantıyı doğru ayarlarsanız, sanal ağdaki iç IP'ye DNSLookup aracı aracılığıyla yanıt verilmelidir.

  • Küme ara sunucu kullanıyorsa, çalışma alanını deneyebilirsiniz curl

curl https://{workspace_id}.workspace.westcentralus.api.azureml.ms/metric/v2.0/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.MachineLearningServices/workspaces/{workspace_name}/api/2.0/prometheus/post -X POST -x {proxy_address} -d {} -v -k

Ara sunucu ve çalışma alanı özel bir bağlantıyla doğru şekilde ayarlandığında, bir iç IP'ye bağlanma girişimini gözlemlemeniz gerekir. Belirteç sağlanmazsa bu senaryoda HTTP 401 durum koduna sahip bir yanıt beklenir.

Diğer bilinen sorunlar

Kubernetes işlem güncelleştirmesi geçerli değil

Şu anda CLI v2 ve SDK v2, mevcut bir Kubernetes işleminin yapılandırmasını güncelleştirmeye izin vermez. Örneğin, ad alanını değiştirmek etkili olmaz.

Çalışma alanı veya kaynak grubu adı '-' ile bitiyor

Kubernetes işleminde dağıtımlar, uç noktalar veya işler gibi iş yükleri oluştururken "InternalServerError" hatasının yaygın bir nedeni, çalışma alanınızın veya kaynak grubu adınızın sonunda '-' gibi özel karakterlerin bulunmasıdır.

Sonraki adımlar