Vytvoření a připojení clusteru Azure Kubernetes Service s v1
PLATÍ PRO:Sada Python SDK azureml v1
PLATÍ PRO:Rozšíření Azure CLI ml v1
Důležité
Tento článek ukazuje, jak pomocí rozhraní příkazového řádku a sady SDK v1 vytvořit nebo připojit cluster Azure Kubernetes Service, který se teď považuje za starší verzi funkce. Pokud chcete připojit Azure Kubernetes Service cluster pomocí doporučeného přístupu pro verzi 2, projděte si téma Úvod do cílového výpočetního objektu Kubernetes ve verzi 2.
Azure Machine Learning dokáže nasadit trénované modely strojového učení do Azure Kubernetes Service. Nejprve ale musíte buď vytvořit cluster Azure Kubernetes Service (AKS) z pracovního prostoru Azure Machine Learning, nebo připojit existující cluster AKS. Tento článek obsahuje informace o vytváření i připojování clusteru.
Požadavky
Pracovní prostor služby Azure Machine Learning. Další informace najdete v tématu Vytvoření pracovního prostoru Služby Azure Machine Learning.
Rozšíření Azure CLI (v1) pro službu Machine Learning, sadu Azure Machine Learning Python SDK nebo rozšíření Azure Machine Learning Visual Studio Code.
Důležité
Některé příkazy Azure CLI v tomto článku používají
azure-cli-ml
rozšíření , nebo v1 pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data budete moct nainstalovat a používat rozšíření v1.Doporučujeme přejít na
ml
rozšíření , nebo v2 do 30. září 2025. Další informace o rozšíření v2 najdete v tématech Rozšíření Azure ML CLI a Python SDK v2.Pokud plánujete používat azure Virtual Network k zabezpečení komunikace mezi pracovním prostorem Azure Machine Learning a clusterem AKS, váš pracovní prostor a jeho přidružené prostředky (úložiště, trezor klíčů Azure Container Registry) musí mít privátní koncové body nebo koncové body služby ve stejné virtuální síti jako virtuální síť clusteru AKS. Postupujte podle kurzu vytvoření zabezpečeného pracovního prostoru a přidejte tyto privátní koncové body nebo koncové body služby do virtuální sítě.
Omezení
AKS je možné vytvořit nebo připojit pouze jako jeden cílový výpočetní objekt v pracovním prostoru Azure Machine Learning. Více příloh pro jednu AKS se nepodporuje.
Pokud potřebujete v clusteru místo základního Load Balancer (BLB) nasadit Standard Load Balancer (SLB), vytvořte cluster na portálu AKS, rozhraní příkazového řádku nebo sadě SDK a pak ho připojte k pracovnímu prostoru Azure Machine Learning.
Pokud uplatňujete zásadu Azure Policy, která omezuje vytváření veřejných IP adres, vytvoření clusteru AKS se nezdaří. AKS vyžaduje veřejnou IP adresu pro odchozí přenosy. Článek o odchozích přenosech obsahuje také pokyny k uzamčení výchozích přenosů z clusteru přes veřejnou IP adresu s výjimkou několika plně kvalifikovaných názvů domén. Existují 2 způsoby, jak povolit veřejnou IP adresu:
- Cluster může používat veřejnou IP adresu vytvořenou ve výchozím nastavení s nástrojem BLB nebo SLB.
- Cluster je možné vytvořit bez veřejné IP adresy a pak se veřejná IP adresa nakonfiguruje s bránou firewall s trasou definovanou uživatelem. Další informace najdete v tématu Úprava výchozího přenosu dat clusteru s využitím trasy definované uživatelem.
Řídicí rovina služby Azure Machine Learning s touto veřejnou IP adresou nekomunikuje. V rámci nasazení komunikuje s řídicí rovinou AKS.
Pokud chcete připojit cluster AKS, musí mít instanční objekt nebo uživatel provádějící operaci přiřazenou roli Vlastník nebo přispěvatel Řízení přístupu na základě role Azure (Azure RBAC) ve skupině prostředků Azure, která obsahuje cluster. Instanční objekt nebo uživatel musí mít také přiřazenou Azure Kubernetes Service clusteru Správa roli clusteru.
Pokud připojíte cluster AKS s povoleným rozsahem autorizovaných IP adres pro přístup k serveru API, povolte tento rozsah IP adres v řídicí rovině služby Azure Machine Learning pro cluster AKS. Řídicí rovina služby Azure Machine Learning se nasazuje napříč spárovanými oblastmi a nasazuje odvozovací pody v clusteru AKS. Bez přístupu k serveru API nelze odvozovací pody nasadit. Při povolování rozsahů IP adres v clusteru AKS použijte rozsahy IP adres pro obě spárované oblasti.
Autorizované rozsahy IP adres fungují jen se službou Standard Load Balancer.
Pokud chcete použít privátní cluster AKS (přes Azure Private Link), musíte cluster nejprve vytvořit a pak ho připojit k pracovnímu prostoru. Další informace najdete v tématu Vytvoření privátního clusteru Azure Kubernetes Service.
Azure Machine Learning nepodporuje používání veřejného plně kvalifikovaného názvu domény (FQDN) s privátním clusterem AKS.
Název výpočetního prostředku, který představuje cluster AKS, MUSÍ být jedinečný v rámci pracovního prostoru Azure Machine Learning. Může obsahovat písmena, číslice a pomlčky. Musí začínat písmenem a končit písmenem nebo číslicí a musí mít délku 3 až 24 znaků.
Pokud chcete nasadit modely do uzlů GPU nebo uzlů FPGA (nebo jakékoli konkrétní skladové položky), musíte vytvořit cluster s konkrétní skladovou položkou. Vytvoření sekundárního fondu uzlů v existujícím clusteru a nasazení modelů do sekundárního fondu uzlů se nepodporuje.
Při vytváření nebo připojování clusteru můžete vybrat, jestli chcete cluster vytvořit pro vývoj a testování, nebo pro produkční prostředí. Pokud chcete místo produkčního prostředí vytvořit cluster AKS pro vývoj, ověřování a testování, nastavte účel clusteru na vývoj a testování. Pokud nezadáte účel clusteru, vytvoří se produkční cluster.
Důležité
Cluster vývoj-testování není vhodný pro provoz na produkční úrovni a může prodloužit dobu odvozování. Clustery pro vývoj a testování také nezaručují odolnost proti chybám.
Pokud se cluster při vytváření nebo připojování použije pro produkční prostředí, musí obsahovat alespoň 3 uzly. Cluster pro vývoj a testování musí obsahovat alespoň 1 uzel.
Sada SDK pro Azure Machine Learning neposkytuje podporu škálování clusteru AKS. Pokud chcete škálovat uzly v clusteru, použijte uživatelské rozhraní clusteru AKS ve studiu Azure Machine Learning. Můžete změnit jen počet uzlů, nikoli velikost virtuálního počítače v clusteru. Další informace o škálování uzlů v clusteru AKS najdete v následujících článcích:
Neaktualizujte cluster přímo pomocí konfigurace YAML. Služba Azure Kubernetes Services sice podporuje aktualizace prostřednictvím konfigurace YAML, ale nasazení Azure Machine Learning přepíší vaše změny. Jedinými dvěma poli YAML, která se nepřepíší, obsahují údaje pro limity požadavků a procesor a paměť.
Vytvoření clusteru AKS pomocí uživatelského rozhraní studio Azure Machine Learning, sady SDK nebo rozšíření rozhraní příkazového řádku není idempotentní. Při opětovném pokusu o vytvoření prostředku dojde k chybě typu „cluster se stejným názvem už existuje“.
- Použití šablony Azure Resource Manager a prostředku Microsoft.MachineLearningServices/workspaces/computes k vytvoření clusteru AKS také není idempotentní. Pokud se pokusíte šablonu opětovně použít k aktualizaci už existujícího prostředku, zobrazí se stejná chyba.
Verze Azure Kubernetes Service
Azure Kubernetes Service umožňuje vytvořit cluster pomocí různých verzí Kubernetes. Další informace o dostupných verzích najdete v tématu podporované verze Kubernetes v Azure Kubernetes Service.
Při vytváření clusteru Azure Kubernetes Service pomocí jedné z následujících metod nemáte na výběr ve verzi clusteru, která je vytvořena:
- studio Azure Machine Learning nebo část služby Azure Machine Learning Azure Portal.
- Rozšíření Machine Learning pro Azure CLI
- Sada Sdk služby Azure Machine Learning
Tyto metody vytvoření clusteru AKS používají výchozí verzi clusteru. Výchozí verze se v průběhu času mění s tím, jak budou k dispozici nové verze Kubernetes.
Při připojování existujícího clusteru AKS podporujeme všechny aktuálně podporované verze AKS.
Důležité
Azure Kubernetes Service používá ovladač Blobfuse FlexVolume pro verze <=1.16 a ovladač Blob CSI pro verze >=1.17. Proto je důležité po upgradu clusteru webovou službu znovu nasadit nebo aktualizovat, aby bylo možné provést nasazení na správnou metodu blobfuse pro verzi clusteru.
Poznámka
V hraničních případech můžete mít starší cluster, který už není podporovaný. V takovém případě operace připojení vrátí chybu a zobrazí seznam aktuálně podporovaných verzí.
Můžete připojit verze Preview . Funkce Ve verzi Preview se poskytují bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Podpora používání verzí Preview může být omezená. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Dostupné a výchozí verze
Dostupné a výchozí verze AKS najdete pomocí příkazu Azure CLIaz aks get-versions. Například následující příkaz vrátí verze dostupné v oblasti USA – západ:
az aks get-versions -l westus -o table
Výstup tohoto příkazu se podobá následujícímu textu:
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
Pokud chcete najít výchozí verzi, která se používá při vytváření clusteru prostřednictvím služby Azure Machine Learning, můžete použít --query
parametr a vybrat výchozí verzi:
az aks get-versions -l westus --query "orchestrators[?default == `true`].orchestratorVersion" -o table
Výstup tohoto příkazu se podobá následujícímu textu:
Result
--------
1.16.13
Pokud chcete dostupné verze zkontrolovat prostřednictvím kódu programu, použijte rozhraní REST API Container Service Client – List Orchestrators. Dostupné verze najdete v položkách, kde orchestratorType
je Kubernetes
. Přidružené orchestrationVersion
položky obsahují dostupné verze, které lze připojit k vašemu pracovnímu prostoru.
Pokud chcete najít výchozí verzi, která se používá při vytváření clusteru prostřednictvím služby Azure Machine Learning, vyhledejte položku, kde orchestratorType
je Kubernetes
a default
je true
. Přidružená orchestratorVersion
hodnota je výchozí verze. Následující fragment kódu JSON ukazuje příklad položky:
...
{
"orchestratorType": "Kubernetes",
"orchestratorVersion": "1.16.13",
"default": true,
"upgrades": [
{
"orchestratorType": "",
"orchestratorVersion": "1.17.7",
"isPreview": false
}
]
},
...
Vytvoření nového clusteru AKS
Časový odhad: Přibližně 10 minut.
Vytvoření nebo připojení clusteru AKS je pro váš pracovní prostor jednorázový proces. Tento cluster můžete znovu použít pro více nasazení. Pokud odstraníte cluster nebo skupinu prostředků, která ho obsahuje, musíte při příštím nasazení vytvořit nový cluster. K pracovnímu prostoru můžete mít připojené více clusterů AKS.
Následující příklad ukazuje, jak vytvořit nový cluster AKS pomocí sady SDK a rozhraní příkazového řádku:
PLATÍ PRO:Sada 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)
Další informace o třídách, metodách a parametrech použitých v tomto příkladu najdete v následujících referenčních dokumentech:
Připojení existujícího clusteru AKS
Časový odhad: Přibližně 5 minut.
Pokud už ve svém předplatném Azure máte cluster AKS, můžete ho použít se svým pracovním prostorem.
Tip
Stávající cluster AKS může být v jiné oblasti Azure, než je váš pracovní prostor Služby Azure Machine Learning.
Upozornění
Nevytvováváte více souběžných příloh ke stejnému clusteru AKS. Například připojení jednoho clusteru AKS k pracovnímu prostoru pomocí dvou různých názvů nebo připojení jednoho clusteru AKS k jinému pracovnímu prostoru. Každá nová příloha naruší předchozí existující přílohy a způsobí nepředvídatelnou chybu.
Pokud chcete cluster AKS znovu připojit, například změnit nastavení konfigurace protokolu TLS nebo jiného clusteru, musíte nejprve odebrat existující přílohu pomocí AksCompute.detach().
Další informace o vytvoření clusteru AKS pomocí azure CLI nebo portálu najdete v následujících článcích:
- Vytvoření clusteru AKS (rozhraní příkazového řádku)
- Vytvoření clusteru AKS (portál)
- Vytvoření clusteru AKS (šablona ARM v šablonách Azure Pro rychlý start)
Následující příklad ukazuje, jak k pracovnímu prostoru připojit existující cluster AKS:
PLATÍ PRO:Sada 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)
Další informace o třídách, metodách a parametrech použitých v tomto příkladu najdete v následujících referenčních dokumentech:
Vytvoření nebo připojení clusteru AKS s ukončením protokolu TLS
Při vytváření nebo připojení clusteru AKS můžete povolit ukončení protokolu TLS s konfiguračními objekty AksCompute.provisioning_configuration() a AksCompute.attach_configuration(). Obě metody vrací objekt konfigurace, který má metodu enable_ssl , a k povolení protokolu TLS můžete použít metodu enable_ssl .
Následující příklad ukazuje, jak povolit ukončení protokolu TLS s automatickým generováním a konfigurací certifikátů TLS pomocí certifikátu Microsoftu pod pokličkou.
PLATÍ PRO:Sada 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")
Následující příklad ukazuje, jak povolit ukončení protokolu TLS pomocí vlastního certifikátu a názvu vlastní domény. U vlastní domény a certifikátu musíte aktualizovat záznam DNS tak, aby ukazoval na IP adresu bodujícího koncového bodu. Viz Aktualizace DNS.
PLATÍ PRO:Sada 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")
Poznámka
Další informace o tom, jak zabezpečit nasazení modelu v clusteru AKS, najdete v tématu Použití protokolu TLS k zabezpečení webové služby prostřednictvím služby Azure Machine Learning.
Vytvoření nebo připojení clusteru AKS pro použití interních Load Balancer s privátní IP adresou
Když vytvoříte nebo připojíte cluster AKS, můžete ho nakonfigurovat tak, aby používal interní Load Balancer. S interním Load Balancer budou bodovací koncové body pro vaše nasazení do AKS používat privátní IP adresu v rámci virtuální sítě. Následující fragmenty kódu ukazují, jak nakonfigurovat interní Load Balancer pro cluster AKS.
PLATÍ PRO:Sada Python SDK azureml v1
Pokud chcete vytvořit cluster AKS, který používá interní Load Balancer, použijte load_balancer_type
parametry aload_balancer_subnet
:
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)
Důležité
Pokud je váš cluster AKS nakonfigurovaný s interním Load Balancer, použití certifikátu poskytnutého Microsoftem se nepodporuje a k povolení protokolu TLS musíte použít vlastní certifikát.
Poznámka
Další informace o tom, jak zabezpečit prostředí pro odvozování, najdete v tématu Zabezpečení prostředí odvozování služby Azure Machine Learning.
Odpojení clusteru AKS
K odpojení clusteru od pracovního prostoru použijte jednu z následujících metod:
Upozornění
Při použití studio Azure Machine Learning, sady SDK nebo rozšíření Azure CLI pro strojové učení k odpojení clusteru AKS se cluster AKS neodstraní. Informace o odstranění clusteru najdete v tématu Použití Azure CLI s AKS.
PLATÍ PRO:Sada Python SDK azureml v1
aks_target.detach()
Poradce při potížích
Aktualizace clusteru
Aktualizace do komponent služby Azure Machine Learning nainstalovaných v clusteru Azure Kubernetes Service se musí použít ručně.
Tyto aktualizace můžete použít tak, že cluster odpojíte od pracovního prostoru Služby Azure Machine Learning a znovu ho k pracovnímu prostoru připojíte.
PLATÍ PRO:Sada Python SDK azureml v1
compute_target = ComputeTarget(workspace=ws, name=clusterWorkspaceName)
compute_target.detach()
compute_target.wait_for_completion(show_output=True)
Než budete moct cluster znovu připojit k pracovnímu prostoru, musíte nejprve odstranit všechny azureml-fe
související prostředky. Pokud v clusteru není žádná aktivní služba, můžete související prostředky odstranit azureml-fe
pomocí následujícího kódu.
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
Pokud je v clusteru povolený protokol TLS, budete muset při opětovném připojení clusteru zadat certifikát TLS/SSL a privátní klíč.
PLATÍ PRO:Sada 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)
Pokud už nemáte certifikát TLS/SSL a privátní klíč nebo používáte certifikát vygenerovaný službou Azure Machine Learning, můžete soubory před odpojením clusteru načíst připojením ke clusteru pomocí kubectl
a načtením tajného kódu azuremlfessl
.
kubectl get secret/azuremlfessl -o yaml
Poznámka
Kubernetes ukládá tajné kódy v kódování Base64. Před poskytnutím tajných kódů do budete muset dekódovat cert.pem
attach_config.enable_ssl
komponenty a key.pem
base64.
Selhání webových služeb
Mnoho selhání webových služeb v AKS je možné ladit připojením ke clusteru pomocí kubectl
. Cluster AKS můžete získat kubeconfig.json
spuštěním příkazu
PLATÍ PRO:Rozšíření Azure CLI ml v1
az aks get-credentials -g <rg> -n <aks cluster name>
Odstranění prostředků souvisejících s azureml-fe
Pokud po odpojení clusteru není v clusteru žádná aktivní služba, odstraňte azureml-fe
před dalším připojením související prostředky:
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
Nástroje pro vyrovnávání zatížení by neměly mít veřejné IP adresy
Při pokusu o vytvoření nebo připojení clusteru AKS se může zobrazit zpráva, že se žádost zamítla, protože nástroje pro vyrovnávání zatížení by neměly mít veřejné IP adresy. Tato zpráva se vrátí, když správce použil zásadu, která brání použití clusteru AKS s veřejnou IP adresou.
Pokud chcete tento problém vyřešit, vytvořte nebo připojte cluster pomocí load_balancer_type
parametrů a load_balancer_subnet
. Další informace najdete v tématu Interní Load Balancer (privátní IP adresa).