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. Pokud chcete připojit cluster Azure Kubernetes Service pomocí doporučeného přístupu pro v2, přečtěte si téma Úvod do výpočetního cíle Kubernetes ve verzi 2.
Azure Machine Learning může nasadit natré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 služby Azure Machine Learning, nebo připojit existující cluster AKS. Tento článek obsahuje informace o vytvoření i připojení 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. Rozšíření v1 budete moct nainstalovat a používat do tohoto data.Doporučujeme přejít na
ml
rozšíření , nebo v2 do 30. září 2025. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure ML CLI a Python SDK v2.Pokud plánujete k zabezpečení komunikace mezi pracovním prostorem Azure Machine Learning a clusterem AKS používat azure Virtual Network, musí mít váš pracovní prostor a související prostředky (úložiště, trezor klíčů Azure Container Registry) 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 místo základního Load Balancer (BLB) nasadit Standard Load Balancer(SLB), vytvořte cluster na portálu, rozhraní příkazovém řádku nebo sadě SDK AKS a pak ho připojte k pracovnímu prostoru Služby 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žít veřejnou IP adresu vytvořenou ve výchozím nastavení s BLB nebo SLB, nebo
- 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á cluster obsahuje. Instanční objekt nebo uživatel musí mít v clusteru také přiřazenou Azure Kubernetes Service 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-test není vhodný pro provoz na produkční úrovni a může prodloužit dobu odvozování. Clustery pro vývoj/testování také nezaručují odolnost proti chybám.
Pokud se při vytváření nebo připojování clusteru použije k produkčnímu prostředí, musí obsahovat aspoň 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 ve verzi vytvořeného clusteru na výběr:
- studio Azure Machine Learning nebo oddíl služby Azure Machine Learning Azure Portal.
- Rozšíření Služby Machine Learning pro Azure CLI
- Azure Machine Learning SDK.
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 znovu nasadit nebo aktualizovat webovou službu , aby bylo možné provést nasazení pro správnou metodu blobfuse pro verzi clusteru.
Poznámka
Můžou existovat hraniční případy, kdy máte starší cluster, který už není podporovaný. V tomto 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
K vyhledání dostupných a výchozích verzí AKS použijte příkaz 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 je podobný 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 pomocí parametru --query
vybrat výchozí verzi:
az aks get-versions -l westus --query "orchestrators[?default == `true`].orchestratorVersion" -o table
Výstup tohoto příkazu je podobný následujícímu textu:
Result
--------
1.16.13
Pokud chcete programově zkontrolovat dostupné verze, použijte rozhraní REST API Container Service Client – List Orchestraators. 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()
Řešení potíží
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 odpojením clusteru od pracovního prostoru Azure Machine Learning a opětovným připojováním clusteru k pracovnímu prostoru.
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)
Před opětovným připojením clusteru 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 tyto soubory před odpojením clusteru načíst tak, že se ke clusteru připojíte pomocí kubectl
příkazu a načtete tajný klíč azuremlfessl
.
kubectl get secret/azuremlfessl -o yaml
Poznámka
Kubernetes ukládá tajné kódy ve formátu s kódováním Base64. Před poskytnutím attach_config.enable_ssl
tajných kódů budete muset dekódovat cert.pem
komponenty tajných kódů Base64 a key.pem
.
Selhání webové služby
Mnoho selhání webových služeb v AKS je možné ladit připojením ke clusteru pomocí kubectl
. Pro 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, před dalším připojením odstraňte azureml-fe
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 požadavek byl zamítnut, 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žije 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).