Aracılığıyla paylaş


v1 ile Azure Kubernetes Service kümesi oluşturma ve ekleme

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v1

Önemli

Bu makalede, cli ve SDK v1 kullanarak artık eski özellik olarak kabul edilen bir Azure Kubernetes Service kümesi oluşturma veya ekleme adımları gösterilmektedir. v2 için önerilen yaklaşımı kullanarak Azure Kubernetes Service kümesi eklemek için bkz . v2'de Kubernetes işlem hedefine giriş.

Azure Machine Learning, eğitilmiş makine öğrenmesi modellerini Azure Kubernetes Service'e dağıtabilir. Ancak, önce Azure Machine Learning çalışma alanınızdan bir Azure Kubernetes Service (AKS) kümesi oluşturmanız veya var olan bir AKS kümesini eklemeniz gerekir. Bu makalede hem küme oluşturma hem de ekleme hakkında bilgi sağlanır.

Önkoşullar

Sınırlamalar

  • AKS’ler, Azure Machine Learning çalışma alanında yalnızca tek bir işlem hedefi olarak oluşturulabilir veya eklenebilir. Bir AKS için birden çok ek desteklenmez.

  • Kümenizde Temel Load Balancer (BLB) yerine bir Standart Load Balancer (SLB) dağıtılması gerekiyorsa AKS portalında/CLI/SDK'da bir küme oluşturun ve bunu Azure Machine Learning çalışma alanına ekleyin.

  • Genel IP adreslerinin oluşturulmasını kısıtlayan bir Azure İlkesi varsa AKS kümesi oluşturma işlemi başarısız olur. AKS, çıkış trafiği için Genel IP gerektirir. Çıkış trafiği makalesi, birkaç tam etki alanı adı dışında Genel IP üzerinden kümeden gelen çıkış trafiğini kilitlemek için de rehberlik sağlar. Genel IP'yi etkinleştirmenin 2 yolu vardır:

    Azure Machine Learning kontrol düzlemi bu Genel IP ile iletişim kurmaz. Dağıtımların AKS kontrol düzlemi ile konuşur.

  • AKS kümesi eklemek için, işlemi gerçekleştiren hizmet sorumlusuna/kullanıcıya, kümeyi içeren Azure kaynak grubunda Sahip veya katkıda bulunan Azure rol tabanlı erişim denetimi (Azure RBAC) rolü atanmalıdır. Hizmet sorumlusuna/kullanıcıya kümede Azure Kubernetes Hizmet Kümesi Yönetici Rolü de atanmalıdır.

  • API sunucusuna erişmek için etkinleştirilmiş bir Yetkili IP aralığına sahip bir AKS kümesi eklerseniz, AKS kümesi için Azure Machine Learning kontrol düzlemi IP aralıklarını etkinleştirin. Azure Machine Learning denetim düzlemi eşleştirilmiş bölgelere dağıtılır ve AKS kümesinde çıkarım podları dağıtır. API sunucusuna erişim olmadan çıkarım podları dağıtılamaz. Bir AKS kümesinde IP aralıklarını etkinleştirirken eşleştirilmiş bölgelerin her ikisi için IP aralıklarını kullanın.

    Yetkili IP aralıkları yalnızca Standart Load Balancer ile çalışır.

  • Özel bir AKS kümesi kullanmak istiyorsanız (Azure Özel Bağlantı kullanarak), önce kümeyi oluşturmanız, ardından da çalışma alanına eklemeniz gerekir. Daha fazla bilgi için bkz. Özel Azure Kubernetes Service kümesi oluşturma.

  • Azure Machine Learning'de özel AKS kümesiyle genel tam etki alanı adı (FQDN) kullanılması desteklenmez.

  • Azure Machine Learning çalışma alanınızda AKS kümesinin işlem adı benzersiz OLMALIDIR. Harf, rakam ve tire içerebilir. Bir harfle başlamalı, bir harf veya rakamla bitmeli ve 3 ila 24 karakter uzunluğunda olmalıdır.

  • Modelleri GPU düğümlerine veya FPGA düğümlerine (veya belirli bir SKU'ya) dağıtmak istiyorsanız, belirli SKU'ya sahip bir küme oluşturmanız gerekir. Mevcut bir kümede ikincil düğüm havuzu oluşturma ve modelleri ikincil düğüm havuzuna dağıtma desteği yoktur.

  • Küme oluştururken veya eklerken, kümenin geliştirme testi veya üretim için oluşturulup oluşturulmayacağını seçebilirsiniz. Üretim yerine geliştirme, doğrulama ve test için bir AKS kümesi oluşturmak istiyorsanız , küme amacını geliştirme testi olarak ayarlayın. Küme amacını belirtmezseniz, bir üretim kümesi oluşturulur.

    Önemli

    Geliştirme testi kümesi üretim düzeyi trafiği için uygun değildir ve çıkarım sürelerini artırabilir. Geliştirme/test kümeleri de hataya dayanıklılık garantisi vermez.

  • Küme oluştururken veya eklerken, küme üretim için kullanılacaksa en az 3 düğüm içermelidir. Geliştirme testi kümesi için en az 1 düğüm içermelidir.

  • Azure Machine Learning SDK'sı AKS kümesini ölçeklendirme desteği sağlamaz. Kümedeki düğümleri ölçeklendirmek için Azure Machine Learning stüdyosunda AKS kümenizin kullanıcı arabirimini kullanın. Kümenin VM boyutunu değil yalnızca düğüm sayısını değiştirebilirsiniz. AKS kümelerinde düğümleri ölçeklendirme hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

  • YAML yapılandırması kullanarak kümeyi doğrudan güncelleştirmeyin. Azure Kubernetes Services YAML yapılandırması aracılığıyla güncelleştirmeleri desteklese de Azure Machine Learning dağıtımları değişikliklerinizi geçersiz kılar. Üzerine yazılmayacak iki YAML alanı istek sınırları ve cpu ve bellektir.

  • Azure Machine Learning stüdyosu kullanıcı arabirimini, SDK'yı veya CLI uzantısını kullanarak AKS kümesi oluşturmak bir kez etkili değildir. Kaynağı yeniden oluşturmaya çalışmak, aynı ada sahip bir kümenin zaten var olduğunu belirten bir hataya neden olur.

    • Aks kümesi oluşturmak için Azure Resource Manager şablonu ve Microsoft.MachineLearningServices/workspaces/computes kaynağının kullanılması da bir kez etkili değildir. Mevcut bir kaynağı güncelleştirmek için şablonu yeniden kullanmayı denerseniz aynı hatayı alırsınız.

Azure Kubernetes Service sürümü

Azure Kubernetes Service, çeşitli Kubernetes sürümlerini kullanarak bir küme oluşturmanıza olanak tanır. Kullanılabilir sürümler hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te desteklenen Kubernetes sürümleri.

Aşağıdaki yöntemlerden birini kullanarak Bir Azure Kubernetes Service kümesi oluştururken, oluşturulan kümenin sürümünde bir seçeneğiniz yoktur:

  • Azure Machine Learning stüdyosu veya Azure portalının Azure Machine Learning bölümü.
  • Azure CLI için Machine Learning uzantısı.
  • Azure Machine Learning SDK'sı.

AKS kümesi oluşturmanın bu yöntemleri, kümenin varsayılan sürümünü kullanır. Yeni Kubernetes sürümleri kullanıma sunuldukçe varsayılan sürüm zaman içinde değişir.

Mevcut aks kümesini eklerken şu anda desteklenen tüm AKS sürümlerini destekliyoruz.

Önemli

Azure Kubernetes Service, =1.16 sürümleri <için Blobfuse FlexVolume sürücüsünü ve =1.17 sürümleri >için Blob CSI sürücüsünü kullanır. Bu nedenle, küme sürümü için doğru blobfuse yöntemine dağıtmak üzere küme yükseltmesi sonrasında web hizmetini yeniden dağıtmak veya güncelleştirmek önemlidir.

Not

Artık desteklenmeyen eski bir kümeye sahip olduğunuz uç durumlar olabilir. Bu durumda, ekleme işlemi bir hata döndürür ve şu anda desteklenen sürümleri listeler.

Önizleme sürümlerini ekleyebilirsiniz. Önizleme işlevselliği bir hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Önizleme sürümlerini kullanma desteği sınırlı olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.

Kullanılabilir ve varsayılan sürümler

Kullanılabilir ve varsayılan AKS sürümlerini bulmak için az aks get-versions Azure CLI komutunu kullanın. Örneğin, aşağıdaki komut Batı ABD bölgesinde kullanılabilen sürümleri döndürür:

az aks get-versions -l westus -o table

Bu komutun çıktısı aşağıdaki metne benzer:

KubernetesVersion    Upgrades
-------------------  ----------------------------------------
1.18.6(preview)      None available
1.18.4(preview)      1.18.6(preview)
1.17.9               1.18.4(preview), 1.18.6(preview)
1.17.7               1.17.9, 1.18.4(preview), 1.18.6(preview)
1.16.13              1.17.7, 1.17.9
1.16.10              1.16.13, 1.17.7, 1.17.9
1.15.12              1.16.10, 1.16.13
1.15.11              1.15.12, 1.16.10, 1.16.13

Azure Machine Learning aracılığıyla küme oluştururken kullanılan varsayılan sürümü bulmak için parametresini --query kullanarak varsayılan sürümü seçebilirsiniz:

az aks get-versions -l westus --query "orchestrators[?default == `true`].orchestratorVersion" -o table

Bu komutun çıktısı aşağıdaki metne benzer:

Result
--------
1.16.13

Kullanılabilir sürümleri program aracılığıyla denetlemek isterseniz Container Service İstemcisi - Liste Düzenleyicileri REST API'sini kullanın. Kullanılabilir sürümleri bulmak için girdilere bakın.orchestratorType Kubernetes İlişkili orchestrationVersion girdiler, çalışma alanınıza eklenebilecek kullanılabilir sürümleri içerir.

Azure Machine Learning aracılığıyla küme oluştururken kullanılan varsayılan sürümü bulmak için ve olan girdisini default orchestratorType Kubernetes truebulun. İlişkili orchestratorVersion değer varsayılan sürümdür. Aşağıdaki JSON parçacığı örnek bir girdi gösterir:

...
 {
        "orchestratorType": "Kubernetes",
        "orchestratorVersion": "1.16.13",
        "default": true,
        "upgrades": [
          {
            "orchestratorType": "",
            "orchestratorVersion": "1.17.7",
            "isPreview": false
          }
        ]
      },
...

Yeni AKS kümesi oluşturma

Zaman tahmini: Yaklaşık 10 dakika.

AKS kümesi oluşturma veya ekleme, çalışma alanınız için tek seferlik bir işlemdir. Bu kümeyi birden çok dağıtım için yeniden kullanabilirsiniz. Kümeyi veya kümeyi içeren kaynak grubunu silerseniz, bir sonraki dağıtımda yeni bir küme oluşturmanız gerekir. Çalışma alanınıza birden çok AKS kümesi iliştirilmiş olabilir.

Aşağıdaki örnekte SDK ve CLI kullanarak yeni bir AKS kümesinin nasıl oluşturulacağı gösterilmektedir:

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

from azureml.core.compute import AksCompute, ComputeTarget

# Use the default configuration (you can also provide parameters to customize this).
# For example, to create a dev/test cluster, use:
# prov_config = AksCompute.provisioning_configuration(cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST)
prov_config = AksCompute.provisioning_configuration()

# Example configuration to use an existing virtual network
# prov_config.vnet_name = "mynetwork"
# prov_config.vnet_resourcegroup_name = "mygroup"
# prov_config.subnet_name = "default"
# prov_config.service_cidr = "10.0.0.0/16"
# prov_config.dns_service_ip = "10.0.0.10"
# prov_config.docker_bridge_cidr = "172.17.0.1/16"

aks_name = 'myaks'
# Create the cluster
aks_target = ComputeTarget.create(workspace = ws,
                                    name = aks_name,
                                    provisioning_configuration = prov_config)

# Wait for the create process to complete
aks_target.wait_for_completion(show_output = True)

Bu örnekte kullanılan sınıflar, yöntemler ve parametreler hakkında daha fazla bilgi için aşağıdaki başvuru belgelerine bakın:

Mevcut AKS kümesini ekleme

Zaman tahmini: Yaklaşık 5 dakika.

Azure aboneliğinizde AKS kümeniz zaten varsa, bunu çalışma alanınızla birlikte kullanabilirsiniz.

İpucu

Mevcut AKS kümesi, Azure Machine Learning çalışma alanınızın dışında bir Azure bölgesinde olabilir.

Uyarı

Aynı AKS kümesine birden çok eşzamanlı ek oluşturmayın. Örneğin, iki farklı ad kullanarak bir AKS kümesini çalışma alanına ekleme veya farklı çalışma alanına bir AKS kümesi ekleme. Her yeni ek, önceki mevcut ekleri bozar ve öngörülemeyen hatalara neden olur.

ÖRNEĞIN TLS veya başka bir küme yapılandırma ayarını değiştirmek gibi bir AKS kümesini yeniden eklemek istiyorsanız, önce AksCompute.detach() kullanarak var olan eki kaldırmanız gerekir.

Azure CLI veya portal kullanarak AKS kümesi oluşturma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Aşağıdaki örnekte, çalışma alanınıza var olan bir AKS kümesinin nasıl eklenmesi gösterilmektedir:

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

from azureml.core.compute import AksCompute, ComputeTarget
# Set the resource group that contains the AKS cluster and the cluster name
resource_group = 'myresourcegroup'
cluster_name = 'myexistingcluster'

# Attach the cluster to your workgroup. If the cluster has less than 12 virtual CPUs, use the following instead:
# attach_config = AksCompute.attach_configuration(resource_group = resource_group,
#                                         cluster_name = cluster_name,
#                                         cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST)
attach_config = AksCompute.attach_configuration(resource_group = resource_group,
                                         cluster_name = cluster_name)
aks_target = ComputeTarget.attach(ws, 'myaks', attach_config)

# Wait for the attach process to complete
aks_target.wait_for_completion(show_output = True)

Bu örnekte kullanılan sınıflar, yöntemler ve parametreler hakkında daha fazla bilgi için aşağıdaki başvuru belgelerine bakın:

TLS sonlandırma ile AKS kümesi oluşturma veya ekleme

AKS kümesi oluşturduğunuzda veya eklediğinizde, AksCompute.provisioning_configuration() ve AksCompute.attach_configuration() yapılandırma nesneleriyle TLS sonlandırmayı etkinleştirebilirsiniz. Her iki yöntem de enable_ssl yöntemi olan bir yapılandırma nesnesi döndürür ve TLS'yi etkinleştirmek için enable_ssl yöntemini kullanabilirsiniz.

Aşağıdaki örnekte, arka planda Microsoft sertifikası kullanılarak otomatik TLS sertifika oluşturma ve yapılandırma ile TLS sonlandırmanın nasıl etkinleştirileceği gösterilmektedir.

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

   from azureml.core.compute import AksCompute, ComputeTarget
   
   # Enable TLS termination when you create an AKS cluster by using provisioning_config object enable_ssl method

   # Leaf domain label generates a name using the formula
   # "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
   # where "######" is a random series of characters
   provisioning_config.enable_ssl(leaf_domain_label = "contoso")
   
   # Enable TLS termination when you attach an AKS cluster by using attach_config object enable_ssl method

   # Leaf domain label generates a name using the formula
   # "<leaf-domain-label>######.<azure-region>.cloudapp.azure.com"
   # where "######" is a random series of characters
   attach_config.enable_ssl(leaf_domain_label = "contoso")


Aşağıdaki örnekte, özel sertifika ve özel etki alanı adıyla TLS sonlandırmanın nasıl etkinleştirileceği gösterilmektedir. Özel etki alanı ve sertifika ile, DNS kaydınızı puanlama uç noktasının IP adresine işaret eden şekilde güncelleştirmeniz gerekir, lütfen BKz . DNS'nizi güncelleştirme

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

   from azureml.core.compute import AksCompute, ComputeTarget

   # Enable TLS termination with custom certificate and custom domain when creating an AKS cluster
   
   provisioning_config.enable_ssl(ssl_cert_pem_file="cert.pem",
                                        ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")
    
   # Enable TLS termination with custom certificate and custom domain when attaching an AKS cluster

   attach_config.enable_ssl(ssl_cert_pem_file="cert.pem",
                                        ssl_key_pem_file="key.pem", ssl_cname="www.contoso.com")


Not

AKS kümesinde model dağıtımının güvenliğini sağlama hakkında daha fazla bilgi için bkz . Azure Machine Learning aracılığıyla bir web hizmetinin güvenliğini sağlamak için TLS kullanma

Özel IP ile İç Load Balancer kullanmak için AKS kümesi oluşturma veya ekleme

AKS kümesi oluşturduğunuzda veya eklediğinizde, kümeyi İç Yük Dengeleyici kullanacak şekilde yapılandırabilirsiniz. İç Yük Dengeleyici ile AKS'ye dağıtımlarınız için puanlama uç noktaları sanal ağ içinde özel bir IP kullanır. Aşağıdaki kod parçacıklarında AKS kümesi için İç Yük Dengeleyicinin nasıl yapılandırılır gösterilmektedir.

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

İç Load Balancer kullanan bir AKS kümesi oluşturmak için ve load_balancer_subnet parametrelerini kullanınload_balancer_type:

from azureml.core.compute.aks import AksUpdateConfiguration
from azureml.core.compute import AksCompute, ComputeTarget

# When you create an AKS cluster, you can specify Internal Load Balancer to be created with provisioning_config object
provisioning_config = AksCompute.provisioning_configuration(load_balancer_type = 'InternalLoadBalancer')

# Create the cluster
aks_target = ComputeTarget.create(workspace = ws,
                                name = aks_name,
                                provisioning_configuration = provisioning_config)

# Wait for the create process to complete
aks_target.wait_for_completion(show_output = True)

Önemli

AKS kümeniz bir İç Yük Dengeleyici ile yapılandırılmışsa, Microsoft tarafından sağlanan bir sertifika desteklenmez ve TLS'yi etkinleştirmek için özel sertifika kullanmanız gerekir.

Not

Çıkarım ortamının güvenliğini sağlama hakkında daha fazla bilgi için bkz . Azure Machine Learning Çıkarım Ortamının Güvenliğini Sağlama

AKS kümesini ayırma

Bir kümeyi çalışma alanınızdan ayırmak için aşağıdaki yöntemlerden birini kullanın:

Uyarı

Aks kümesini ayırmak için makine öğrenmesi için Azure Machine Learning stüdyosu, SDK veya Azure CLI uzantısını kullanmak AKS kümesini silmez. Kümeyi silmek için bkz . Azure CLI'yi AKS ile kullanma.

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

aks_target.detach()

Sorun giderme

Kümeyi güncelleştirme

Azure Kubernetes Service kümesine yüklenen Azure Machine Learning bileşenlerine yönelik güncelleştirmelerin el ile uygulanması gerekir.

Kümeyi Azure Machine Learning çalışma alanından ayırarak ve kümeyi çalışma alanına yeniden ekleyerek bu güncelleştirmeleri uygulayabilirsiniz.

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

compute_target = ComputeTarget(workspace=ws, name=clusterWorkspaceName)
compute_target.detach()
compute_target.wait_for_completion(show_output=True)

Kümeyi çalışma alanınıza yeniden ekleyebilmeniz için önce ilgili kaynakları silmeniz azureml-fe gerekir. Kümede etkin bir hizmet yoksa, aşağıdaki kodla ilgili kaynaklarınızı azureml-fe silebilirsiniz.

kubectl delete sa azureml-fe
kubectl delete clusterrole azureml-fe-role
kubectl delete clusterrolebinding azureml-fe-binding
kubectl delete svc azureml-fe
kubectl delete svc azureml-fe-int-http
kubectl delete deploy azureml-fe
kubectl delete secret azuremlfessl
kubectl delete cm azuremlfeconfig

Kümede TLS etkinleştirildiyse, kümeyi yeniden eklerken TLS/SSL sertifikasını ve özel anahtarı sağlamanız gerekir.

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

attach_config = AksCompute.attach_configuration(resource_group=resourceGroup, cluster_name=kubernetesClusterName)

# If SSL is enabled.
attach_config.enable_ssl(
    ssl_cert_pem_file="cert.pem",
    ssl_key_pem_file="key.pem",
    ssl_cname=sslCname)

attach_config.validate_configuration()

compute_target = ComputeTarget.attach(workspace=ws, name=args.clusterWorkspaceName, attach_configuration=attach_config)
compute_target.wait_for_completion(show_output=True)

ARTıK TLS/SSL sertifikanız ve özel anahtarınız yoksa veya Azure Machine Learning tarafından oluşturulan bir sertifika kullanıyorsanız, kullanarak kümeye bağlanarak ve gizli dizisini azuremlfesslalarak kubectl kümeyi ayırmadan önce dosyaları alabilirsiniz.

kubectl get secret/azuremlfessl -o yaml

Not

Kubernetes, gizli dizileri Base64 ile kodlanmış biçimde depolar. Gizli dizileri sağlamadan attach_config.enable_sslönce ve bileşenlerini Base64 ile çözmeniz cert.pem key.pem gerekir.

Web hizmeti hataları

KULLANARAK kümeye kubectlbağlanarak AKS'deki birçok web hizmeti hatasında hata ayıklanabilir. BIR AKS kümesi için komutunu çalıştırarak alabilirsiniz kubeconfig.json

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v1

az aks get-credentials -g <rg> -n <aks cluster name>

Kümeyi ayırdıktan sonra kümede etkin hizmet yoksa, yeniden eklemeden önce lütfen ilgili kaynakları silin azureml-fe :

kubectl delete sa azureml-fe
kubectl delete clusterrole azureml-fe-role
kubectl delete clusterrolebinding azureml-fe-binding
kubectl delete svc azureml-fe
kubectl delete svc azureml-fe-int-http
kubectl delete deploy azureml-fe
kubectl delete secret azuremlfessl
kubectl delete cm azuremlfeconfig

Yük dengeleyicilerin genel IP'leri olmamalıdır

AKS kümesi oluşturmaya veya eklemeye çalışırken, "Load Balancer'ların genel IP'leri olmamalıdır" hatası nedeniyle isteğin reddedildiğini belirten bir ileti alabilirsiniz. Bir yönetici genel IP adresiyle AKS kümesi kullanılmasını engelleyen bir ilke uyguladığında bu ileti döndürülür.

Bu sorunu çözmek için ve load_balancer_subnet parametrelerini kullanarak kümeyi load_balancer_type oluşturun/ekleyin. Daha fazla bilgi için bkz . İç Yük Dengeleyici (özel IP).

Sonraki adımlar