Megosztás a következőn keresztül:


Azure Kubernetes Service-fürt létrehozása és csatolása v1-zel

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml-bővítmény v1

Fontos

Ez a cikk bemutatja, hogyan használhatja a parancssori felületet és az SDK v1-et egy Azure Kubernetes Service-fürt létrehozásához vagy csatolásához, amely most már örökölt funkciónak számít. Ha Azure Kubernetes Service fürtöt a v2-hez ajánlott megközelítéssel szeretné csatolni, tekintse meg a Kubernetes számítási cél v2-ben való használatát ismertető cikket.

Az Azure Machine Learning betanított gépi tanulási modelleket helyezhet üzembe a Azure Kubernetes Service. Először azonban létre kell hoznia egy Azure Kubernetes Service- (AKS-) fürtöt az Azure Machine Learning-munkaterületről, vagy csatolnia kell egy meglévő AKS-fürtöt. Ez a cikk a fürtök létrehozásával és csatolásával kapcsolatos információkat tartalmazza.

Előfeltételek

Korlátozások

  • AKS csak önálló számítási helyként hozható létre vagy csatlakoztatható Azure Machine Learning-munkaterületen. Egy AKS többszörös csatlakoztatása nem támogatott.

  • Ha alapszintű Load Balancer (BLB) helyett egy standard Load Balancer (SLB) kell üzembe helyeznie a fürtön, hozzon létre egy fürtöt az AKS-portálon/CLI/SDK-ban, majd csatolja az Azure Machine Learning-munkaterülethez.

  • Ha a nyilvános IP-címek létrehozását egy Azure Policy-szabályzat korlátozza, akkor az AKS-fürt létrehozása sikertelen lesz. Az AKS nyilvános IP-címet igényel a kimenő forgalomhoz. A kimenő forgalomról szóló cikk a fürt nyilvános IP-címen keresztül kimenő forgalmának lezárásához is útmutatást nyújt, kivéve a teljes tartománynevek esetében. Nyilvános IP-cím két módon engedélyezhető:

    Az Azure Machine Learning vezérlősíkja nem kommunikál ezzel a nyilvános IP-címmel. Az üzembe helyezéseket az AKS vezérlősíkjával egyezteti.

  • AKS-fürt csatolásához a műveletet végrehajtó szolgáltatásnévnek/felhasználónak tulajdonosi vagy közreműködői Azure szerepköralapú hozzáférés-vezérlési (Azure RBAC) szerepkört kell hozzárendelnie a fürtöt tartalmazó Azure-erőforráscsoporthoz. A szolgáltatásnevet/felhasználót Azure Kubernetes Service fürt Rendszergazda szerepkörhöz is hozzá kell rendelni a fürtön.

  • Ha olyan AKS-fürtöt csatlakoztat, amely az API-kiszolgálóhoz hozzáféréssel rendelkező engedélyezett IP-címtartománnyal rendelkezik, engedélyezze az Azure Machine Learning-vezérlősík IP-címtartományait az AKS-fürthöz. Az Azure Machine Learning-vezérlősík üzembe van helyezve a párosított régiókban, és következtetési podokat helyez üzembe az AKS-fürtben. Az API-kiszolgálóhoz való hozzáférés hiányában a következtetési podok nem helyezhetők üzembe. Használja az IP-címtartományokat mindkét párosított régióban az IP-címtartományok AKS-fürtben történő engedélyezésekor.

    Az engedélyezett IP-címtartományok csak a Standard Load Balancerrel működnek.

  • Ha privát AKS-fürtöt szeretne használni (az Azure Private Link használatával), akkor először a fürtöt kell létrehoznia, majd a munkaterülethez csatlakoztatnia. További információ: Privát Azure Kubernetes Service-fürt létrehozása.

  • A nyilvános teljes tartománynév (FQDN) privát AKS-fürttel való használatát nem támogatja az Azure Machine Learning.

  • Az AKS-fürt számítási nevének egyedinek KELL lennie az Azure Machine Learning-munkaterületen belül. Betűket, számjegyeket és kötőjeleket tartalmazhat. Betűvel kell kezdődnie, betűvel vagy számjeggyel kell végződnie, a hossza pedig 3-tól 24 karakterig terjedhet.

  • Ha gpu-csomópontokon vagy FPGA-csomópontokon (vagy bármely adott termékváltozaton) szeretne modelleket üzembe helyezni, akkor létre kell hoznia egy fürtöt az adott termékváltozattal. Egy másodlagos csomópontkészlet létrehozása egy meglévő fürtben és a modelleknek a másodlagos fürtben történő üzembe helyezése nem támogatott.

  • Fürt létrehozásakor vagy csatlakoztatásakor kiválaszthatja, hogy fejlesztési-tesztelési célra vagy éles használatra hozza létre a fürtöt. Ha nem éles felhasználásra, hanem fejlesztéshez, ellenőrzéshez és teszteléshez szeretne AKS-fürtöt létrehozni, a fürt rendeltetéseként állítsa be a dev-test értéket. Ha nem adja meg a fürt rendeltetését, éles fürt lesz létrehozva.

    Fontos

    A fejlesztési tesztfürt nem alkalmas az éles szintű forgalomra, és növelheti a következtetési időket. A fejlesztési/tesztelési fürtök szintén nem garantálják a hibatűrést.

  • Fürt létrehozásakor vagy csatolásakor, ha a fürt éles környezetben lesz használva, akkor legalább 3 csomópontot kell tartalmaznia. A dev-test fürtöknek legalább 1 csomópontot kell tartalmazniuk.

  • Az Azure Machine Learning SDK nem nyújt támogatást az AKS-fürtök skálázásához. A fürtbeli csomópontok skálázására használja az AKS-fürt felhasználói felületét az Azure Machine Learning stúdióban. Csak a csomópontok számát módosíthatja, a fürt virtuális gépeinek méretét nem. Az AKS-fürtben lévő csomópontok skálázásáról a következő cikkek kínálnak további információkat:

  • Ne frissítse a fürtöt közvetlenül YAML-konfigurációval. Bár az Azure Kubernetes Service támogatja a YAML-konfigurációval végzett módosításokat, az Azure Machine Learning üzemelő példányai felülbírálják a módosításokat. Csak két YAML-mező nem lesz felülbírálva: a request limits és a cpu and memory.

  • Az AKS-fürt létrehozása a Azure Machine Learning stúdió felhasználói felületen, SDK-val vagy CLI-bővítménnyel nem idempotens. Az erőforrás ismételt létrehozására tett kísérlet azt a hibát eredményezi, hogy már létezik fürt ugyanezzel a névvel.

    • Az Azure Resource Manager-sablon és a Microsoft.MachineLearningServices/workspaces/computes erőforrás használata az AKS-fürt létrehozásához szintén nem idempotens. Ha a sablon ismételt használatával próbál meg frissíteni egy már meglévő erőforrást, ugyanezt a hibaüzenetet kapja.

Az Azure Kubernetes Service verziója

Azure Kubernetes Service lehetővé teszi, hogy különböző Kubernetes-verziókkal hozzon létre fürtöt. Az elérhető verziókról további információt a támogatott Kubernetes-verziók Azure Kubernetes Service című témakörben talál.

Ha az alábbi módszerek egyikével hoz létre Azure Kubernetes Service fürtöt, a létrehozott fürt verziójában nem választhat:

  • Azure Machine Learning stúdió vagy a Azure Portal Azure Machine Learning szakaszát.
  • Machine Learning-bővítmény az Azure CLI-hez.
  • Azure Machine Learning SDK.

Az AKS-fürt létrehozásának ezen módszerei a fürt alapértelmezett verzióját használják. Az alapértelmezett verzió idővel változik , amint az új Kubernetes-verziók elérhetővé válnak.

Meglévő AKS-fürt csatolásakor az összes jelenleg támogatott AKS-verziót támogatjuk.

Fontos

Azure Kubernetes Service a Blobfuse FlexVolume illesztőt használja az =1.16 és <a Blob CSI illesztőprogramot az =1.17 verziókhoz>. Ezért fontos, hogy a fürtfrissítés után újra üzembe helyezze vagy frissítse a webszolgáltatást , hogy a fürtverzióhoz tartozó blobfuse metódus megfelelő legyen.

Megjegyzés

Előfordulhatnak peremhálózati esetek, amikor egy régebbi fürt már nem támogatott. Ebben az esetben a csatolási művelet hibát ad vissza, és felsorolja a jelenleg támogatott verziókat.

Az előzetes verziókat csatolhatja. Az előzetes verziójú funkciók szolgáltatásiszint-szerződés nélkül érhetőek el, és éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. Az előzetes verziók használata korlátozott lehet. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Elérhető és alapértelmezett verziók

Az elérhető és alapértelmezett AKS-verziók megkereséséhez használja az az aks get-versions Azure CLI-parancsot. A következő parancs például az USA nyugati régiójában elérhető verziókat adja vissza:

az aks get-versions -l westus -o table

A parancs kimenete az alábbi szöveghez hasonló:

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

Ha meg szeretné keresni a fürt Azure Machine Learningen keresztüli létrehozásakor használt alapértelmezett verziót, a --query paraméterrel kiválaszthatja az alapértelmezett verziót:

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

A parancs kimenete az alábbi szöveghez hasonló:

Result
--------
1.16.13

Ha programozott módon szeretné ellenőrizni az elérhető verziókat, használja a Container Service Client – List Orchestrators REST API-t. Az elérhető verziók megkereséséhez tekintse meg azokat a bejegyzéseket, ahol orchestratorType a .Kubernetes A társított orchestrationVersion bejegyzések tartalmazzák a munkaterülethez csatolható elérhető verziókat.

Ha meg szeretné keresni a fürt Azure Machine Learningen keresztüli létrehozásakor használt alapértelmezett verziót, keresse meg azt a bejegyzést, ahol orchestratorType van Kubernetes és default van true. A társított orchestratorVersion érték az alapértelmezett verzió. Az alábbi JSON-kódrészlet egy példabejegyzést mutat be:

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

Új AKS-fürt létrehozása

Időbecslés: Körülbelül 10 perc.

Az AKS-fürt létrehozása vagy csatolása a munkaterület egyszeri folyamata. Ezt a fürtöt több üzembe helyezéshez is felhasználhatja. Ha törli a fürtöt vagy az azt tartalmazó erőforráscsoportot, a következő üzembe helyezéskor létre kell hoznia egy új fürtöt. A munkaterülethez több AKS-fürt is csatolható.

Az alábbi példa bemutatja, hogyan hozhat létre új AKS-fürtöt az SDK és a parancssori felület használatával:

A KÖVETKEZŐKRE VONATKOZIK: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)

Az ebben a példában használt osztályokról, metódusokról és paraméterekről az alábbi referenciadokumentumokban talál további információt:

Meglévő AKS-fürt csatolása

Időbecslés: Körülbelül 5 perc.

Ha már rendelkezik AKS-fürttel az Azure-előfizetésében, használhatja azt a munkaterülettel.

Tipp

A meglévő AKS-fürt az Azure Machine Learning-munkaterületétől eltérő Azure-régióban lehet.

Figyelmeztetés

Ne hozzon létre több egyidejű mellékletet ugyanarra az AKS-fürtre. Például egy AKS-fürt csatolása egy munkaterülethez két különböző névvel, vagy egy AKS-fürt csatolása egy másik munkaterülethez. Minden új melléklet megszakítja a korábbi melléklet(ek)et, és kiszámíthatatlan hibát okoz.

Ha újra szeretne csatolni egy AKS-fürtöt, például módosítani szeretné a TLS-t vagy más fürtkonfigurációs beállítást, először el kell távolítania a meglévő mellékletet az AksCompute.detach() használatával.

Az AKS-fürt Azure CLI-vel vagy portállal történő létrehozásáról az alábbi cikkekben talál további információt:

Az alábbi példa bemutatja, hogyan csatolhat meglévő AKS-fürtöt a munkaterülethez:

A KÖVETKEZŐKRE VONATKOZIK: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)

Az ebben a példában használt osztályokról, metódusokról és paraméterekről az alábbi referenciadokumentumokban talál további információt:

AKS-fürt létrehozása vagy csatolása TLS-lezárással

AKS-fürt létrehozásakor vagy csatolásakor engedélyezheti a TLS leállítását AksCompute.provisioning_configuration() és AksCompute.attach_configuration() konfigurációs objektumokkal. Mindkét metódus egy enable_ssl metódussal rendelkező konfigurációs objektumot ad vissza, és enable_ssl metódussal engedélyezheti a TLS-t.

Az alábbi példa bemutatja, hogyan engedélyezheti a TLS-leállítást az automatikus TLS-tanúsítványlétrehozással és -konfigurációval a Microsoft-tanúsítvány használatával a motorháztető alatt.

A KÖVETKEZŐKRE VONATKOZIK: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")


Az alábbi példa bemutatja, hogyan engedélyezheti a TLS-megszakítást egyéni tanúsítvánnyal és egyéni tartománynévvel. Egyéni tartomány és tanúsítvány esetén frissítenie kell a DNS-rekordot, hogy a pontozási végpont IP-címére mutasson. Lásd: A DNS frissítése

A KÖVETKEZŐKRE VONATKOZIK: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")


Megjegyzés

A modellek AKS-fürtön való üzembe helyezésének biztonságossá tételéről további információt a webszolgáltatás Azure Machine Learningen keresztüli védelméről a TLS használatával című témakörben talál.

AKS-fürt létrehozása vagy csatolása belső Load Balancer privát IP-címmel való használatához

AKS-fürt létrehozásakor vagy csatolásakor konfigurálhatja a fürtöt belső Load Balancer használatára. Belső Load Balancer esetén az AKS-be történő üzembe helyezés pontozási végpontjai privát IP-címet használnak a virtuális hálózaton belül. Az alábbi kódrészletek bemutatják, hogyan konfigurálhat belső Load Balancer egy AKS-fürthöz.

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

Belső Load Balancer használó AKS-fürt létrehozásához használja a és load_balancer_subnet a load_balancer_type paramétereket:

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)

Fontos

Ha az AKS-fürt belső Load Balancer van konfigurálva, a Microsoft által megadott tanúsítvány használata nem támogatott, és a TLS engedélyezéséhez egyéni tanúsítványt kell használnia.

Megjegyzés

A következtetési környezet biztonságossá tételével kapcsolatos további információkért lásd: Azure Machine Learning-következtetési környezet védelme

AKS-fürt leválasztása

Fürt munkaterületről való leválasztásához használja az alábbi módszerek egyikét:

Figyelmeztetés

Az AKS-fürt leválasztásához nem törli az AKS-fürtöt az Azure Machine Learning stúdió, az SDK vagy a gépi tanuláshoz készült Azure CLI-bővítmény használatával. A fürt törléséhez lásd : Az Azure CLI használata az AKS-sel.

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

aks_target.detach()

Hibaelhárítás

A fürt frissítése

Frissítések egy Azure Kubernetes Service-fürtön telepített Azure Machine Learning-összetevőket manuálisan kell alkalmazni.

Ezeket a frissítéseket úgy alkalmazhatja, hogy leválasztja a fürtöt az Azure Machine Learning-munkaterületről, és újracsatlakoztatja a fürtöt a munkaterületre.

A KÖVETKEZŐKRE VONATKOZIK:Python SDK azureml v1

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

Mielőtt újra csatlakoztathatja a fürtöt a munkaterülethez, először törölnie kell a azureml-fe kapcsolódó erőforrásokat. Ha a fürtben nincs aktív szolgáltatás, törölheti a azureml-fe kapcsolódó erőforrásokat az alábbi kóddal.

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

Ha a TLS engedélyezve van a fürtben, a fürt újraaktiválásakor meg kell adnia a TLS/SSL-tanúsítványt és a titkos kulcsot.

A KÖVETKEZŐKRE VONATKOZIK: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)

Ha már nincs TLS-/SSL-tanúsítványa és titkos kulcsa, vagy az Azure Machine Learning által létrehozott tanúsítványt használ, a fürt leválasztása előtt lekérheti a fájlokat, ha a titkos kód azuremlfesslhasználatával kubectl csatlakozik a fürthöz.

kubectl get secret/azuremlfessl -o yaml

Megjegyzés

A Kubernetes a titkos kódokat Base64 kódolású formátumban tárolja. A titkos kódok és key.pem azok összetevőit a Base64-decode-nak kell dekódolniacert.pem, mielőtt megadja őket a számáraattach_config.enable_ssl.

Webszolgáltatási hibák

Az AKS-ben számos webszolgáltatási hiba hibakereséséhez kapcsolódjon a fürthöz a használatával kubectl. Az AKS-fürthöz a kubeconfig.json következő parancs futtatásával szerezhető be:

A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml-bővítmény v1

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

Ha a fürt leválasztása után nincs aktív szolgáltatás a fürtben, törölje a azureml-fe kapcsolódó erőforrásokat, mielőtt újra csatolja:

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

A terheléselosztóknak nem lehetnek nyilvános IP-címeik

Amikor AKS-fürtöt próbál létrehozni vagy csatolni, előfordulhat, hogy a kérés megtagadva, mert "A Terheléselosztóknak nem lehetnek nyilvános IP-címeik". Ez az üzenet akkor jelenik meg, ha egy rendszergazda olyan szabályzatot alkalmazott, amely megakadályozza egy nyilvános IP-címmel rendelkező AKS-fürt használatát.

A probléma megoldásához hozza létre/csatolja a fürtöt a és load_balancer_subnet a load_balancer_type paraméterek használatával. További információt a Belső Load Balancer (privát IP-cím) című témakörben talál.

Következő lépések