Vytvoření a připojení clusteru Azure Kubernetes Service s v1
PLATÍ PRO: 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 cílového výpočetního prostředí Kubernetes ve verzi 2.
Azure Machine Learning dokáže nasadit natrénované modely strojového učení do služby 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í a připojování clusteru.
Požadavky
Pracovní prostor služby Azure Machine Learning. Další informace najdete v tématu Vytvoření pracovního prostoru 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) před 30. zářím 2025. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure ML CLI a Python SDK v2.Pokud plánujete používat virtuální síť Azure k zabezpečení komunikace mezi pracovním prostorem Služby Azure Machine Learning a clusterem AKS, musí mít váš pracovní prostor a jeho přidružené 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 pro přidání těchto privátních koncových bodů nebo koncových bodů 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 do clusteru místo základního nástroje pro vyrovnávání zatížení (BLB) nasadit standardní nástroj pro vyrovnávání zatížení (SLB), vytvořte cluster na portálu AKS, přes rozhraní příkazovém řádku nebo pomocí sady SDK 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žívat veřejnou IP adresu vytvořenou ve výchozím nastavení s nástrojem BLB nebo SLB nebo
- Cluster lze vytvořit bez veřejné IP adresy a pak je veřejná IP adresa nakonfigurovaná 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í být instančnímu objektu nebo uživateli provádějícímu operaci přiřazena role vlastníka nebo přispěvatele řízení přístupu na základě role (Azure RBAC) ve skupině prostředků Azure, která tento cluster obsahuje. Instanční objekt nebo uživatel musí mít také přiřazenou roli správce clusteru Azure Kubernetes Service v 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 jednotkou. 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 pro vývojový test není vhodný pro provoz na úrovni produkce a může zvýšit dobu odvozování. Clustery pro vývoj/testování také nezaručují odolnost proti chybám.
Při vytváření nebo připojování clusteru, pokud se cluster 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í studio Azure Machine Learning uživatelského rozhraní, 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 Manageru 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 s využitím různých verzí Kubernetes. Další informace o dostupných verzích najdete v tématu Podporované verze Kubernetes ve službě 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 vytvořeného clusteru:
- studio Azure Machine Learning nebo v části Azure Machine Learning na webu Azure Portal.
- Rozšíření 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í, jakmile 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č CSI objektů blob pro verze >=1.17. Proto je důležité webovou službu po upgradu clusteru znovu nasadit nebo aktualizovat, aby byla nasazena správná metoda blobfuse pro verzi clusteru.
Poznámka:
Můžou existovat hraniční případy, kdy máte starší cluster, který se už nepodporuje. 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
Pokud chcete najít dostupné a výchozí verze AKS, použijte příkaz Azure CLI az 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 orchestrátorů služby Container Service – List. Pokud chcete najít dostupné verze, podívejte se na položky, kde orchestratorType
je Kubernetes
. Přidružené orchestrationVersion
položky obsahují dostupné verze, které je možné 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 a default
je Kubernetes
true
. orchestratorVersion
Přidružená hodnota je výchozí verze. Následující fragment kódu JSON ukazuje ukázkovou položku:
...
{
"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 jednorázový proces pro váš pracovní prostor. 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 připojit několik 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: 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ž máte cluster AKS ve svém předplatném Azure, můžete ho použít se svým pracovním prostorem.
Tip
Existující cluster AKS může být v jiné oblasti Azure než v pracovním prostoru Azure Machine Learning.
Upozorňující
Nevytvádejte více souběžných příloh do stejného 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 přeruší předchozí existující přílohy a způsobí nepředvídatelnou chybu.
Pokud chcete znovu připojit cluster AKS, 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 (CLI)
- Vytvoření clusteru AKS (portál)
- Vytvoření clusteru AKS (šablona ARM v šablonách rychlého startu Azure)
Následující příklad ukazuje, jak připojit existující cluster AKS k vašemu pracovnímu prostoru:
PLATÍ PRO: 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řipojování clusteru AKS můžete povolit ukončení protokolu TLS s objekty konfigurace 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átu TLS pomocí certifikátu Microsoftu pod kapotou.
PLATÍ PRO: 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 s vlastním certifikátem a vlastním názvem domény. U vlastní domény a certifikátu musíte aktualizovat záznam DNS tak, aby odkazoval na IP adresu koncového bodu bodování. Další informace najdete v tématu Aktualizace DNS.
PLATÍ PRO: 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 zabezpečení 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ího load Balanceru s privátní IP adresou
Při vytváření nebo připojování clusteru AKS můžete cluster nakonfigurovat tak, aby používal interní nástroj pro vyrovnávání zatížení. S interním nástrojem pro vyrovnávání zatížení 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í nástroj pro vyrovnávání zatížení pro cluster AKS.
PLATÍ PRO: Python SDK azureml v1
K vytvoření clusteru AKS, který používá interní nástroj pro vyrovnávání zatížení, použijte následující load_balancer_type
parametry load_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 nástrojem pro vyrovnávání zatížení, použití poskytnutého certifikátu Microsoftu se nepodporuje a k povolení protokolu TLS musíte použít vlastní certifikát.
Poznámka:
Další informace o zabezpečení prostředí pro odvozování najdete v tématu Zabezpečení prostředí pro odvozování ve službě Azure Machine Learning.
Odpojení clusteru AKS
K odpojení clusteru z pracovního prostoru použijte jednu z následujících metod:
Upozorňující
Použití rozšíření studio Azure Machine Learning, sady SDK nebo Azure CLI pro strojové učení k odpojení clusteru AKS neodstraní cluster AKS. Pokud chcete cluster odstranit, přečtěte si téma Použití Azure CLI s AKS.
PLATÍ PRO: Python SDK azureml v1
aks_target.detach()
Řešení problému
Aktualizace clusteru
Aktualizace 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 z pracovního prostoru Azure Machine Learning a opětovným připojením clusteru k pracovnímu prostoru.
PLATÍ PRO: 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 ke svému 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: 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ž certifikát TLS/SSL a privátní klíč nemáte nebo používáte certifikát vygenerovaný službou Azure Machine Learning, můžete soubory načíst před odpojením clusteru připojením ke clusteru pomocí kubectl
tajného kódu a načtením tajného kódu azuremlfessl
.
kubectl get secret/azuremlfessl -o yaml
Poznámka:
Kubernetes ukládá tajné kódy ve formátu kódování Base64. Před poskytnutím attach_config.enable_ssl
tajných kódů budete muset dekódovat cert.pem
a key.pem
komponenty tajných kódů Base64.
Selhání webových služeb
Mnoho selhání webové služby 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
související prostředky před opětovnou připojením:
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 žádost byla zamítnuta, 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ů.load_balancer_subnet
Další informace najdete v tématu Interní nástroj pro vyrovnávání zatížení (privátní IP adresa).