Mengintegrasikan Azure HPC Cache dengan Azure Kubernetes Service (AKS)

Azure HPC Cache mempercepat akses ke data Anda untuk tugas komputasi dengan performa tinggi (HPC). Dengan penembolokan file di Azure, Azure HPC Cache membawa skalabilitas komputasi cloud ke alur kerja Anda yang sudah ada. Artikel ini menunjukkan cara mengintegrasikan Azure HPC Cache dengan Azure Kubernetes Service (AKS).

Sebelum Anda mulai

  • Kluster AKS harus berada di wilayah yang mendukung Azure HPC Cache.

  • Anda memerlukan Azure CLI versi 2.7 atau yang lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

  • Daftarkan hpc-cache ekstensi di langganan Azure Anda. Untuk informasi selengkapnya tentang menggunakan HPC Cache dengan Azure CLI, lihat prasyarat HPC Cache CLI.

  • Tinjau prasyarat HPC Cache. Anda perlu memenuhi hal berikut sebelum dapat menjalankan HPC Cache:

    • Cache memerlukan subnet khusus dengan setidaknya 64 alamat IP yang tersedia.
    • Subnet tidak boleh menghosting VM atau kontainer lain.
    • Subnet harus dapat diakses dari simpul AKS.
  • Jika Anda perlu menjalankan aplikasi Anda sebagai pengguna tanpa akses root, Anda mungkin perlu menonaktifkan root squashing dengan menggunakan perintah ubah pemilik (chown) untuk mengubah kepemilikan direktori ke pengguna lain. Pengguna tanpa akses root perlu memiliki direktori untuk mengakses sistem file. Agar pengguna memiliki direktori, pengguna root harus menggunakan direktori kepada pengguna tersebut, tetapi jika HPC Cache melakukan squashing root, operasi ini ditolak karena pengguna root (UID 0) sedang dipetakan ke pengguna anonim. Untuk informasi selengkapnya tentang kebijakan root squashing dan akses klien, lihat kebijakan akses HPC Cache.

Memasang ekstensi hpc-cache Azure CLI

Penting

Fitur pratinjau AKS tersedia berdasarkan layanan mandiri. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau AKS sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

Untuk menginstal ekstensi hpc-cache, jalankan perintah berikut:

az extension add --name hpc-cache

Jalankan perintah berikut untuk memperbarui ke versi terbaru ekstensi yang dirilis:

az extension update --name hpc-cache

Mendaftarkan bendera fitur StorageCache

Daftarkan penyedia sumber daya Microsoft.StorageCache menggunakan az provider register perintah .

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

Dibutuhkan beberapa menit agar status menampilkan Terdaftar. Verifikasi status pendaftaran dengan menggunakan perintah az feature show :

az feature show --namespace "Microsoft.StorageCache"

Membuat Azure HPC Cache

  1. Dapatkan grup sumber daya simpul menggunakan az aks show perintah dengan --query nodeResourceGroup parameter kueri.

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

    Output Anda akan terlihat mirip dengan contoh output berikut:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Buat subnet HPC Cache khusus menggunakan az network vnet subnet create perintah . Pertama tentukan variabel lingkungan untuk RESOURCE_GROUP, , VNET_NAMEVNET_ID, dan SUBNET_NAME. Salin output dari langkah sebelumnya untuk RESOURCE_GROUP, dan tentukan nilai untuk 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. Buat HPC Cache di grup dan wilayah sumber daya simpul yang sama. Pertama-tama tentukan variabel SUBNET_IDlingkungan .

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

    Buat HPC Cache menggunakan az hpc-cache create perintah . Contoh berikut membuat HPC Cache di wilayah US Timur dengan jenis cache 2G Standar bernama MyHpcCache. Tentukan nilai untuk --location, --sku-name, dan --name.

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

    Catatan

    Pembuatan HPC Cache dapat memakan waktu hingga 20 menit.

Membuat dan mengonfigurasi penyimpanan Azure

  1. Buat akun penyimpanan menggunakan az storage account create perintah . Pertama-tama tentukan variabel STORAGE_ACCOUNT_NAMElingkungan .

    Penting

    Anda harus memilih nama akun penyimpanan yang unik. Ganti dengan nama yang Anda tentukan uniquestorageaccount . Panjang nama akun penyimpanan harus antara 3 dan 24 karakter dan hanya boleh berisi angka dan huruf kecil.

    STORAGE_ACCOUNT_NAME=uniquestorageaccount
    

    Contoh berikut membuat akun penyimpanan di wilayah US Timur dengan SKU Standard_LRS. Tentukan nilai untuk --location dan --sku.

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location eastus \
      --sku Standard_LRS
    
  2. Tetapkan Peran Kontributor Data Blob Penyimpanan pada langganan Anda menggunakan az role assignment create perintah . Pertama, tentukan variabel STORAGE_ACCOUNT_ID lingkungan dan 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. Buat kontainer Blob dalam akun penyimpanan menggunakan az storage container create perintah . Pertama, tentukan variabel CONTAINER_NAME lingkungan dan ganti nama untuk kontainer Blob.

    CONTAINER_NAME=mystoragecontainer
    
    az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --auth-mode login
    
  4. Berikan izin ke akun layanan Azure HPC Cache untuk mengakses akun penyimpanan dan kontainer Blob Anda menggunakan az role assignment perintah . Pertama, tentukan variabel HPC_CACHE_USER lingkungan dan 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. Tambahkan kontainer blob ke HPC Cache Anda sebagai target penyimpanan menggunakan az hpc-cache blob-storage-target add perintah . Contoh berikut membuat kontainer blob bernama MyStorageTarget ke HPC Cache MyHpcCache. Tentukan nilai untuk --name, --cache-name, dan --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"
    

Menyiapkan penyeimbangan beban klien

  1. Buat zona DNS Privat Azure untuk alamat IP yang menghadap klien menggunakan az network private-dns zone create perintah . Pertama-tama tentukan variabel PRIVATE_DNS_ZONE lingkungan dan tentukan nama untuk zona tersebut.

    PRIVATE_DNS_ZONE="myhpccache.local"
    
    az network private-dns zone create \
      --resource-group $RESOURCE_GROUP \
      --name $PRIVATE_DNS_ZONE
    
  2. Buat tautan DNS antara Zona DNS Privat Azure dan VNet menggunakan az network private-dns link vnet create perintah . Ganti nilai untuk --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. Buat nama DNS round-robin untuk alamat IP yang menghadap klien menggunakan az network private-dns record-set a create perintah . Pertama, tentukan variabel DNS_NAMElingkungan , , HPC_MOUNTS0, HPC_MOUNTS1dan HPC_MOUNTS2. Ganti nilai untuk properti 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
    

Membuat volume persisten

  1. Buat file bernama pv-nfs.yaml untuk menentukan volume persisten lalu tempelkan dalam manifes berikut. Ganti nilai untuk properti server dan 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. Dapatkan kredensial untuk kluster Kubernetes Anda menggunakan az aks get-credentials perintah .

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Buat volume persisten menggunakan kubectl apply perintah .

    kubectl apply -f pv-nfs.yaml
    
  4. Verifikasi status volume persisten Tersedia menggunakan kubectl describe perintah .

    kubectl describe pv pv-nfs
    

Membuat klaim volume persisten

  1. Buat file bernama pvc-nfs.yamluntuk menentukan klaim volume persisten, lalu tempel manifes berikut.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. Buat klaim volume persisten menggunakan kubectl apply perintah .

    kubectl apply -f pvc-nfs.yaml
    
  3. Verifikasi status klaim volume persisten terikat menggunakan kubectl describe perintah .

    kubectl describe pvc pvc-nfs
    

Memasang Azure HPC Cache dengan pod

  1. Buat file bernama nginx-nfs.yaml untuk menentukan pod yang menggunakan klaim volume persisten, lalu tempel manifes berikut.

    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. Buat pod menggunakan kubectl apply perintah .

    kubectl apply -f nginx-nfs.yaml
    
  3. Verifikasi pod berjalan menggunakan kubectl describe perintah .

    kubectl describe pod nginx-nfs
    
  4. Pastikan volume Anda dipasang di pod menggunakan kubectl exec perintah untuk terhubung ke pod.

    kubectl exec -it nginx-nfs -- sh
    

    Untuk memeriksa apakah volume dipasang, jalankan df dalam format yang dapat dibaca manusia menggunakan --human-readable opsi (-h singkatnya).

    df -h
    

    Contoh berikut menyerupai output yang dikembalikan dari perintah:

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

Langkah berikutnya