Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "tak, jak jsou" a "dle dostupnosti" a jsou vyloučeny ze smluv o úrovni služeb a z omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Spravované rozšíření KubeRay pro Azure Kubernetes Service (AKS) je ve verzi Preview. Instaluje a spravuje operátor KubeRay a vlastní definice prostředků Ray (CRD) ve vašem clusteru: RayCluster, RayJob, RayCronJob a RayService.
V tomto článku se dozvíte, jak nainstalovat, ověřit, aktualizovat a odebrat rozšíření pomocí Azure CLI. Nasadíte také ukázkovou úlohu Ray, abyste potvrdili, že operátor spravuje prostředky Ray podle očekávání.
Prerequisites
- Předplatné Azure a cluster AKS, na kterém běží Kubernetes 1.34 nebo novější a používá spravovanou identitu v Azure oblasti veřejného cloudu podporované službou AKS. Pokud cluster nemáte, přečtěte si téma Vytvoření clusteru AKS pomocí Azure CLI.
- Aktuální verze Azure CLI.
- Rozšíření
k8s-extensionAzure CLI verze 1.8.0 nebo novější. - kubectl kompatibilní s verzí Kubernetes vašeho clusteru.
- Oprávnění k registraci poskytovatelů prostředků Azure, správě rozšíření clusteru, načtení přihlašovacích údajů clusteru a kontrole prostředků Kubernetes
Limitations
-
Stávající instalace open-source softwaru (OSS) KubeRay:Odinstalujte všechny existující samoobslužně hostované operátory KubeRay před instalací spravovaného rozšíření KubeRay (
microsoft.kuberay). Odmítnutá instalace může stále měnit schémata a vlastnictví Ray CRD a odstranění neúspěšného rozšíření tyto změny nevrací zpět. Zachovejte CRD a prostředky úloh Pokud už instalace selhala, před opakováním postupujte podle pokynů k obnovení .
Příprava prostředí
Následující příklady používají Bash. Nastavte předplatné a podrobnosti o existujícím clusteru a pak se přihlaste:
SUBSCRIPTION_ID="<subscription-id>"
RESOURCE_GROUP="<existing-resource-group>"
CLUSTER_NAME="<existing-aks-cluster>"
EXTENSION_NAME="kuberay"
RELEASE_TRAIN="preview"
az login
az account set --subscription "$SUBSCRIPTION_ID"
Zkontrolujte verzi Kubernetes clusteru. Než budete pokračovat, ověřte, že vrácená hodnota verze je 1.34 nebo novější:
az aks show \
--resource-group "$RESOURCE_GROUP" \
--name "$CLUSTER_NAME" \
--query kubernetesVersion \
--output tsv
Připojte se ke clusteru:
az aks get-credentials \
--resource-group "$RESOURCE_GROUP" \
--name "$CLUSTER_NAME"
Nainstalujte nebo aktualizujte rozšíření rozhraní příkazového řádku a zaregistrujte požadované poskytovatele prostředků:
az extension add --name k8s-extension --upgrade
az provider register --namespace Microsoft.ContainerService --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
Zkontrolujte nainstalovanou verzi rozšíření rozhraní příkazového řádku:
az extension show --name k8s-extension --query version --output tsv
Instalace rozšíření rozhraní příkazového řádku poskytuje příkazy pro správu; neinstaluje KubeRay do clusteru.
Odinstalace existujícího operátoru OSS KubeRay
Pokud nemáte self-hostovaný operátor, tento krok přeskočte. Jinak zálohujte data úloh/zátěže a manifesty, pozastavte harmonogramy RayCronJob a počkejte na dokončení spuštěných úloh před odebráním operátora.
Pro instalaci Helmu vyhledejte název releasu a obor názvů:
helm list --all-namespaces
Odeberte pouze release operátoru a ověřte, že jeho nasazení je pryč:
OSS_RELEASE_NAME="<existing-kuberay-release-name>"
OSS_RELEASE_NAMESPACE="<existing-kuberay-release-namespace>"
helm uninstall "$OSS_RELEASE_NAME" --namespace "$OSS_RELEASE_NAMESPACE"
kubectl get deployments --namespace "$OSS_RELEASE_NAMESPACE"
Zkontrolujte, jestli se zachováný obor názvů zobrazuje Active a že se v každém zachovaném *.ray.io CRD zobrazuje True ve sloupci ESTABLISHED :
kubectl get namespace "$OSS_RELEASE_NAMESPACE"
kubectl get crds \
--output='custom-columns=NAME:.metadata.name,ESTABLISHED:.status.conditions[?(@.type=="Established")].status'
Pokud se obor názvů ukončuje nebo není vytvořeno Ray CRD, před povolením rozšíření problém vyřešte.
U jiných metod instalace použijte jejich postup pro odebrání operátoru. Zachovejte Ray CRDs a prostředky úloh; neodstraňujte jejich jmenné prostory ani objekty CRD.
Nainstalujte spravované rozšíření KubeRay
Uveďte dostupné verze rozšíření pro váš cluster a větev vydání preview:
az k8s-extension extension-types list-versions-by-cluster \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--extension-type microsoft.kuberay \
--release-train "$RELEASE_TRAIN" \
--output table
Ověřte, že je vrácena kompatibilní verze. Pokud se žádný nevrátí, přečtěte si téma Řešení potíží se zjišťováním verzí rozšíření.
Vytvořte rozšíření s povolenými automatickými upgrady. Příkaz používá následující hodnoty:
-
--extension-type microsoft.kuberayinstaluje spravované rozšíření KubeRay. -
--scope clusterinstaluje rozšíření pro celý cluster. -
--release-namespace kuberay-systemnastaví obor názvů prokuberay-operatorDeployment. -
--release-train "$RELEASE_TRAIN"vybere větev vydánípreview. -
--auto-upgrade-minor-version trueumožňuje automatické upgrady. Nezadávejte--versionpři tomto nastavení.
az k8s-extension create \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name "$EXTENSION_NAME" \
--extension-type microsoft.kuberay \
--scope cluster \
--release-namespace kuberay-system \
--release-train "$RELEASE_TRAIN" \
--auto-upgrade-minor-version true
Ověřte instalaci rozšíření
Zkontrolujte nainstalovanou verzi a stav zřizování prostředků:
az k8s-extension show \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name "$EXTENSION_NAME" \
--query "{name:name,version:currentVersion,provisioningState:provisioningState,extensionState:extensionState}" \
--output table
Instalace může trvat až 15 minut. Počkejte, až výstup příkazu zobrazí následující hodnoty, a pak ověřte, že je nasazení operátoru k dispozici a že jsou nainstalovány Ray CRD:
-
provisioningStatejeSucceeded. -
extensionStatejeAvailableneboReady.
kubectl wait \
--for=condition=Available \
deployment/kuberay-operator \
--namespace kuberay-system \
--timeout=5m
kubectl get crds \
rayclusters.ray.io \
raycronjobs.ray.io \
rayjobs.ray.io \
rayservices.ray.io \
--output name
Pokud kontroly zřizování nebo připravenosti selžou, přečtěte si téma Řešení potíží se spravovaným rozšířením KubeRay.
Spuštění ukázkové úlohy Ray
Nasaďte RayCluster pouze s procesorem CPU a odešlete RayJob, abyste potvrdili, že operátor KubeRay dokáže odsouhlasit prostředky Ray a spustit distribuované úlohy. Ukázka používá jeden hlavní pod a jeden pracovní pod.
Nastavte ukázkové názvy prostředků a image Ray:
RAY_NAMESPACE="kuberay-sample"
RAY_CLUSTER_NAME="sample-raycluster"
RAY_JOB_NAME="sample-rayjob"
RAY_VERSION="2.58.0"
RAY_IMAGE="mcr.microsoft.com/aks/ai-runtime/ray@sha256:e9a329eef15e5a13d50c3186c2b8036cd3728c6e218da860de23e8494b99ddd3"
Vytvořte jmenný prostor a nasaďte RayCluster:
kubectl create namespace "$RAY_NAMESPACE"
kubectl apply -f - <<YAML
apiVersion: ray.io/v1
kind: RayCluster
metadata:
name: ${RAY_CLUSTER_NAME}
namespace: ${RAY_NAMESPACE}
spec:
rayVersion: "${RAY_VERSION}"
headGroupSpec:
rayStartParams:
num-cpus: "0"
dashboard-host: "0.0.0.0"
template:
spec:
containers:
- name: ray-head
image: ${RAY_IMAGE}
resources:
requests:
cpu: 500m
memory: 2Gi
limits:
cpu: "1"
memory: 4Gi
workerGroupSpecs:
- groupName: cpu-workers
replicas: 1
minReplicas: 1
maxReplicas: 1
rayStartParams:
num-cpus: "1"
template:
spec:
containers:
- name: ray-worker
image: ${RAY_IMAGE}
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: "1"
memory: 2Gi
YAML
Počkejte, až RayCluster ohlásí ready, a poté ověřte, že jsou spuštěné hlavní a pracovní pody:
kubectl wait \
--for=jsonpath='{.status.state}'=ready \
raycluster/"$RAY_CLUSTER_NAME" \
--namespace "$RAY_NAMESPACE" \
--timeout=10m
kubectl get raycluster,pods --namespace "$RAY_NAMESPACE"
Odešlete RayJob v režimu HTTP do existujícího clusteru. Úloha spustí na pracovním procesu čtyři vzdálené úkoly a po ověření výsledků vytiskne značku úspěchu:
kubectl apply -f - <<YAML
apiVersion: ray.io/v1
kind: RayJob
metadata:
name: ${RAY_JOB_NAME}
namespace: ${RAY_NAMESPACE}
spec:
jobId: ${RAY_JOB_NAME}
submissionMode: HTTPMode
clusterSelector:
ray.io/cluster: ${RAY_CLUSTER_NAME}
entrypoint: >-
python3 -c "import ray; ray.init(address='auto'); square=ray.remote(lambda x: x*x);
values=ray.get([square.remote(i) for i in range(4)]);
assert values == [0, 1, 4, 9], values;
print('KUBERAY_SAMPLE_OK', values, flush=True)"
shutdownAfterJobFinishes: false
YAML
Počkejte na úspěšné dokončení úlohy:
kubectl wait \
--for=jsonpath='{.status.jobStatus}'=SUCCEEDED \
rayjob/"$RAY_JOB_NAME" \
--namespace "$RAY_NAMESPACE" \
--timeout=10m
Přečtěte si protokol driveru Ray z hlavního podu:
HEAD_POD="$(kubectl get pods \
--namespace "$RAY_NAMESPACE" \
--selector="ray.io/cluster=$RAY_CLUSTER_NAME,ray.io/node-type=head" \
--output jsonpath='{.items[0].metadata.name}')"
kubectl exec \
--namespace "$RAY_NAMESPACE" \
"$HEAD_POD" \
--container ray-head \
-- sh -c 'grep -h "KUBERAY_SAMPLE_OK" /tmp/ray/session_latest/logs/job-driver-*.log'
Očekávaný výstup je:
KUBERAY_SAMPLE_OK [0, 1, 4, 9]
Tento výstup potvrzuje, že operátor vytvořil cluster Ray, odeslal úlohu a spustil úlohy na pracovním uzlu. Po dokončení odstraňte ukázkové zdroje:
kubectl delete namespace "$RAY_NAMESPACE"
Aktualizovat spravované rozšíření KubeRay
Pomocí příkazu az k8s-extension extension-types list-versions-by-cluster v části Instalace spravovaného rozšíření KubeRay zkontrolujte, které verze jsou pro váš cluster k dispozici.
Ve stejné relaci prostředí nebo po opětovné definici RESOURCE_GROUP, CLUSTER_NAME, EXTENSION_NAME a RELEASE_TRAIN, jak je popsáno v části Příprava prostředí, povolte automatické upgrady pro existující rozšíření:
az k8s-extension update \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name "$EXTENSION_NAME" \
--release-train "$RELEASE_TRAIN" \
--auto-upgrade-minor-version true \
--yes
Nezadávejte --version, pokud jsou povoleny automatické upgrady. Po aktualizaci opakujte kroky ověření a potvrďte nainstalovanou verzi.
Odinstalujte spravované rozšíření KubeRay
Než odeberete spravované rozšíření KubeRay, ujistěte se, že RESOURCE_GROUP, CLUSTER_NAME a EXTENSION_NAME jsou stále nastavené, jak je popsáno v části Příprava prostředí. Pak zkontrolujte existující prostředky Ray:
kubectl get rayclusters,raycronjobs,rayjobs,rayservices --all-namespaces
- Pozastavte naplánované úlohy, nechte spuštěné úlohy dokončit a zachovejte požadovaná data a manifesty.
- Pokud chcete odstranit úlohy Ray, odstraňte je, když je operátor stále spuštěný, aby mohl dokončit vyčištění.
Odeberte instanci rozšíření:
az k8s-extension delete \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--name "$EXTENSION_NAME" \
--yes
Important
Odebrání rozšíření ponechá na místě Ray CRDs a úlohy, ale operátor je už nespravuje. Neodstraňujte CRD jako zkratku pro vyčištění, protože tím také odstraníte jejich vlastní zdroje.
Ověřte, že se rozšíření kuberay už nezobrazuje v seznamu rozšíření a že je nasazení kuberay-operator odebráno:
az k8s-extension list \
--resource-group "$RESOURCE_GROUP" \
--cluster-name "$CLUSTER_NAME" \
--cluster-type managedClusters \
--output table
kubectl get deployments --namespace kuberay-system