Integrace služby Azure HPC Cache se službou Azure Kubernetes Service (AKS)

Azure HPC Cache zrychluje přístup k datům pro úlohy vysokovýkonného výpočetního prostředí (HPC). Díky ukládání souborů do mezipaměti v Azure přináší Azure HPC Cache do vašich stávajících pracovních postupů škálovatelnost, jaká je možná u cloud computingu. V tomto článku se dozvíte, jak integrovat Azure HPC Cache se službou Azure Kubernetes Service (AKS).

Než začnete

  • Cluster AKS musí být v oblasti, která podporuje Azure HPC Cache.

  • Potřebujete Azure CLI verze 2.7 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

  • hpc-cache Zaregistrujte rozšíření ve svém předplatném Azure. Další informace o používání služby HPC Cache s Azure CLI najdete v požadavcích rozhraní příkazového řádku služby HPC Cache.

  • Projděte si požadavky služby HPC Cache. Před spuštěním služby HPC Cache musíte splnit následující skutečnosti:

    • Mezipaměť vyžaduje vyhrazenou podsíť s alespoň 64 dostupnými IP adresami.
    • Podsíť nesmí hostovat jiné virtuální počítače ani kontejnery.
    • Podsíť musí být přístupná z uzlů AKS.
  • Pokud potřebujete aplikaci spustit jako uživatele bez kořenového přístupu, možná budete muset zakázat root squashing pomocí příkazu change owner (chown) a změnit vlastnictví adresáře na jiného uživatele. Uživatel bez kořenového přístupu musí vlastnit adresář pro přístup k systému souborů. Aby uživatel vlastní adresář, musí uživatel kořenového adresáře pro tohoto uživatele přemístit, ale pokud je služba HPC Cache squashing root, je tato operace odepřena, protože uživatel root (UID 0) je namapován na anonymního uživatele. Další informace o kořenovém squashingu a zásadách přístupu klientů najdete v tématu Zásady přístupu ke službě HPC Cache.

hpc-cache Instalace rozšíření Azure CLI

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Pokud chcete nainstalovat rozšíření hpc-Cache, spusťte následující příkaz:

az extension add --name hpc-cache

Spuštěním následujícího příkazu aktualizujte nejnovější verzi vydaného rozšíření:

az extension update --name hpc-cache

Registrace příznaku funkce StorageCache

Pomocí příkazu zaregistrujte poskytovatele az provider register prostředků Microsoft.StorageCache.

az provider register --namespace Microsoft.StorageCache --wait

Zobrazení stavu Zaregistrované trvá několik minut. Pomocí příkazu az feature show ověřte stav registrace:

az feature show --namespace "Microsoft.StorageCache"

Vytvoření služby Azure HPC Cache

  1. Pomocí příkazu s parametrem --query nodeResourceGroup dotazu získejte skupinu az aks show prostředků uzlu.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Pomocí příkazu vytvořte vyhrazenou podsíť az network vnet subnet create služby HPC Cache. Nejprve definujte proměnné prostředí pro RESOURCE_GROUP, VNET_NAMEVNET_ID, a SUBNET_NAME. Zkopírujte výstup z předchozího kroku pro RESOURCE_GROUPa zadejte hodnotu pro SUBNET_NAME.

    RESOURCE_GROUP=MC_myResourceGroup_myAKSCluster_eastus
    VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
    VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
    SUBNET_NAME=MyHpcCacheSubnet
    
    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/26
    
  3. Vytvořte mezipaměť HPC Cache ve stejné skupině prostředků a oblasti uzlu. Nejprve definujte proměnnou SUBNET_IDprostředí .

    SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv)
    

    Pomocí příkazu vytvořte službu HPC Cache az hpc-cache create . Následující příklad vytvoří mezipaměť HPC Cache v oblasti USA – východ s typem mezipaměti Standard 2G s názvem MyHpcCache. Zadejte hodnotu pro --location, --sku-name a --name.

    az hpc-cache create \
      --resource-group $RESOURCE_GROUP \
      --cache-size-gb "3072" \
      --location eastus \
      --subnet $SUBNET_ID \
      --sku-name "Standard_2G" \
      --name MyHpcCache
    

    Poznámka:

    Vytvoření služby HPC Cache může trvat až 20 minut.

Vytvoření a konfigurace úložiště Azure

  1. Pomocí příkazu vytvořte účet az storage account create úložiště. Nejprve definujte proměnnou STORAGE_ACCOUNT_NAMEprostředí .

    Důležité

    Musíte vybrat jedinečný název účtu úložiště. Nahraďte uniquestorageaccount zadaným názvem. Názvy účtů úložiště musí mít délku 3 až 24 znaků a můžou obsahovat jenom číslice a malá písmena.

    STORAGE_ACCOUNT_NAME=uniquestorageaccount
    

    Následující příklad vytvoří účet úložiště v oblasti USA – východ s skladovou jednotkou Standard_LRS. Zadejte hodnotu pro --location a --sku.

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location eastus \
      --sku Standard_LRS
    
  2. Pomocí příkazu přiřaďte roli Přispěvatel dat v objektu blob služby Storage ve vašem předplatnémaz role assignment create. Nejprve definujte proměnné STORAGE_ACCOUNT_ID prostředí a AD_USER.

    STORAGE_ACCOUNT_ID=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "id" -o tsv)
    AD_USER=$(az ad signed-in-user show --query objectId -o tsv)
    
    az role assignment create --role "Storage Blob Data Contributor" --assignee $AD_USER --scope $STORAGE_ACCOUNT_ID
    
  3. Pomocí příkazu vytvořte kontejner objektů blob v rámci účtu az storage container create úložiště. Nejprve definujte proměnnou CONTAINER_NAME prostředí a nahraďte název kontejneru objektů blob.

    CONTAINER_NAME=mystoragecontainer
    
    az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --auth-mode login
    
  4. Zadejte oprávnění k účtu služby Azure HPC Cache pro přístup k účtu úložiště a kontejneru az role assignment objektů blob pomocí příkazů. Nejprve definujte proměnné HPC_CACHE_USER prostředí a HPC_CACHE_ID.

    HPC_CACHE_USER="StorageCache Resource Provider"
    HPC_CACHE_ID=$(az ad sp list --display-name "${HPC_CACHE_USER}" --query "[].objectId" -o tsv)
    
    az role assignment create --role "Storage Account Contributor" --assignee $HPC_CACHE_ID --scope $STORAGE_ACCOUNT_ID
    az role assignment create --role "Storage Blob Data Contributor" --assignee $HPC_CACHE_ID --scope $STORAGE_ACCOUNT_ID
    
  5. Přidejte kontejner objektů blob do služby HPC Cache jako cíl úložiště pomocí az hpc-cache blob-storage-target add příkazu. Následující příklad vytvoří kontejner objektů blob MyStorageTarget do mezipaměti HPC Cache MyHpcCache. Zadejte hodnotu pro --name, --cache-name a --virtual-namespace-path.

    az hpc-cache blob-storage-target add \
      --resource-group $RESOURCE_GROUP \
      --cache-name MyHpcCache \
      --name MyStorageTarget \
      --storage-account $STORAGE_ACCOUNT_ID \
      --container-name $CONTAINER_NAME \
      --virtual-namespace-path "/myfilepath"
    

Nastavení vyrovnávání zatížení klienta

  1. Pomocí příkazu vytvořte zónu azure Privátní DNS pro IP adresy určené pro klientyaz network private-dns zone create. Nejprve definujte proměnnou PRIVATE_DNS_ZONE prostředí a zadejte název zóny.

    PRIVATE_DNS_ZONE="myhpccache.local"
    
    az network private-dns zone create \
      --resource-group $RESOURCE_GROUP \
      --name $PRIVATE_DNS_ZONE
    
  2. Pomocí příkazu vytvořte propojení DNS mezi zónou Azure Privátní DNS a virtuální az network private-dns link vnet create sítí. Nahraďte hodnotu parametru --name.

    az network private-dns link vnet create \
      --resource-group $RESOURCE_GROUP \
      --name MyDNSLink \
      --zone-name $PRIVATE_DNS_ZONE \
      --virtual-network $VNET_NAME \
      --registration-enabled true
    
  3. Pomocí příkazu vytvořte název DNS s kruhovým dotazováním pro IP adresy az network private-dns record-set a create určené pro klienta. Nejprve definujte proměnné DNS_NAMEprostředí , HPC_MOUNTS0, HPC_MOUNTS1a HPC_MOUNTS2. Nahraďte hodnotu vlastnosti DNS_NAME.

    DNS_NAME="server"
    HPC_MOUNTS0=$(az hpc-cache show --name "MyHpcCache" --resource-group $RESOURCE_GROUP --query "mountAddresses[0]" -o tsv | tr --delete '\r')
    HPC_MOUNTS1=$(az hpc-cache show --name "MyHpcCache" --resource-group $RESOURCE_GROUP --query "mountAddresses[1]" -o tsv | tr --delete '\r')
    HPC_MOUNTS2=$(az hpc-cache show --name "MyHpcCache" --resource-group $RESOURCE_GROUP --query "mountAddresses[2]" -o tsv | tr --delete '\r')
    
    az network private-dns record-set a add-record -g $RESOURCE_GROUP -z $PRIVATE_DNS_ZONE -n $DNS_NAME -a $HPC_MOUNTS0
    
    az network private-dns record-set a add-record -g $RESOURCE_GROUP -z $PRIVATE_DNS_ZONE -n $DNS_NAME -a $HPC_MOUNTS1
    
    az network private-dns record-set a add-record -g $RESOURCE_GROUP -z $PRIVATE_DNS_ZONE -n $DNS_NAME -a $HPC_MOUNTS2
    

Vytvoření trvalého svazku

  1. Vytvořte soubor s názvem pv-nfs.yaml pro definování trvalého svazku a vložte ho do následujícího manifestu. Nahraďte hodnoty vlastnosti server a path.

    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nfs
    spec:
      capacity:
        storage: 10000Gi
      accessModes:
        - ReadWriteMany
      mountOptions:
        - vers=3
      nfs:
        server: server.myhpccache.local
        path: /
    
  2. Pomocí příkazu získejte přihlašovací údaje pro cluster az aks get-credentials Kubernetes.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Pomocí příkazu vytvořte trvalý svazek kubectl apply .

    kubectl apply -f pv-nfs.yaml
    
  4. Pomocí příkazu ověřte, že je trvalý svazek k dispozicikubectl describe.

    kubectl describe pv pv-nfs
    

Vytvoření deklarace trvalého svazku

  1. Vytvořte soubor s názvem pvc-nfs.yamldefinující trvalou deklaraci identity svazku a vložte následující manifest.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. Pomocí příkazu vytvořte trvalou deklaraci identity svazku kubectl apply .

    kubectl apply -f pvc-nfs.yaml
    
  3. Pomocí příkazu ověřte, že je deklarace identity trvalého svazku kubectl describe svázaná.

    kubectl describe pvc pvc-nfs
    

Připojení služby HPC Cache s podem

  1. Vytvořte soubor s názvem nginx-nfs.yaml pro definování podu, který používá trvalou deklaraci identity svazku, a vložte následující manifest.

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-nfs
    spec:
      containers:
     - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        name: nginx-nfs
        command:
        - "/bin/sh"
        - "-c"
        - while true; do echo $(date) >> /mnt/azure/myfilepath/outfile; sleep 1; done
        volumeMounts:
        - name: disk01
          mountPath: /mnt/azure
      volumes:
     - name: disk01
        persistentVolumeClaim:
          claimName: pvc-nfs
    
  2. Vytvořte pod pomocí kubectl apply příkazu.

    kubectl apply -f nginx-nfs.yaml
    
  3. Pomocí příkazu ověřte, že pod běží kubectl describe .

    kubectl describe pod nginx-nfs
    
  4. Ověřte, že je svazek připojený k podu pomocí kubectl exec příkazu pro připojení k podu.

    kubectl exec -it nginx-nfs -- sh
    

    Pokud chcete zkontrolovat, jestli je svazek připojený, spusťte df ho ve formátu čitelném pro člověka --human-readable pomocí možnosti (-h zkráceně).

    df -h
    

    Následující příklad připomíná výstup vrácený příkazem:

    Filesystem             Size  Used Avail Use% Mounted on
    ...
    server.myhpccache.local:/myfilepath 8.0E         0      8.0E   0% /mnt/azure/myfilepath
    ...
    

Další kroky