Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure HPC Cache ускоряет доступ к данным для задач высокопроизводительных вычислений (HPC). Azure HPC Cache обеспечивает масштабируемость облачных вычислений для имеющегося рабочего процесса благодаря кэшированию файлов в Azure. В этой статье рассказывается, как интегрировать Azure HPC Cache со Службой Azure Kubernetes (AKS).
Перед началом
Кластер AKS должен находиться в регионе, поддерживающем Azure HPC Cache.
Вам потребуется Azure CLI версии 2.7 или более поздней. Чтобы узнать версию, выполните команду
az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.В подписке Azure зарегистрируйте расширение
hpc-cache. Для получения дополнительной информации об использовании HPC Cache с Azure CLI см. раздел требования к интерфейсу командной строки HPC Cache.Просмотрите предварительные требования к HPC Cache. Перед запуском HPC Cache необходимо выполнить следующее:
- Для кэша требуется выделенная подсеть с доступными по крайней мере 64 IP-адресами.
- Подсеть не должна размещать другие виртуальные машины или контейнеры.
- Подсеть должна быть доступна с узлов AKS.
Если вам нужно запустить приложение от имени пользователя без root-доступа, может потребоваться отключить сжатие прав root с помощью команды chown для изменения владельца каталога на другого пользователя. Пользователь без корневого доступа должен иметь каталог для доступа к файловой системе. Чтобы пользователь владел каталогом, корневой пользователь должен изменить владельца каталога на этого пользователя с помощью команды chown, но если HPC Cache ограничивает права root, эта операция запрещена, так как корневой пользователь (UID 0) сопоставляется с анонимным пользователем. Дополнительные сведения о маскировании суперпользователя и политиках доступа клиентов см. в политиках доступа HPC Cache.
Установка расширения Azure CLI hpc-cache
Внимание
Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.
Чтобы установить расширение hpc-cache, выполните следующую команду:
az extension add --name hpc-cache
Выполните следующую команду, чтобы обновить до последней версии выпущенного расширения:
az extension update --name hpc-cache
Регистрация флага компонента StorageCache
Зарегистрируйте поставщика ресурсов Microsoft.StorageCache с помощью az provider register команды.
az provider register --namespace Microsoft.StorageCache --wait
Через несколько минут отобразится состояние Registered (Зарегистрировано). Проверьте состояние регистрации с помощью команды az feature show :
az feature show --namespace "Microsoft.StorageCache"
Создание Кэша HPC в Azure
Получите группу ресурсов узла с помощью
az aks showкоманды с параметром--query nodeResourceGroupзапроса.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvВыходные данные должны выглядеть примерно так:
MC_myResourceGroup_myAKSCluster_eastusСоздайте выделенную подсеть HPC Cache с помощью
az network vnet subnet createкоманды. Сначала определите переменные среды дляRESOURCE_GROUP,VNET_NAMEиVNET_IDSUBNET_NAME. Скопируйте выходные данные из предыдущего шагаRESOURCE_GROUPи укажите значение для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=MyHpcCacheSubnetaz network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --address-prefixes 10.0.0.0/26Создайте HPC Cache в одной группе ресурсов узла и регионе. Сначала определите переменную
SUBNET_IDсреды.SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv)Создайте HPC Cache с помощью
az hpc-cache createкоманды. В следующем примере создается HPC Cache в регионе "Восточная часть США" с типом кэша 2G уровня "Стандартный" с именем MyHpcCache. Укажите значение для --location, --sku-name и --name.az hpc-cache create \ --resource-group $RESOURCE_GROUP \ --cache-size-gb "3072" \ --location eastus \ --subnet $SUBNET_ID \ --sku-name "Standard_2G" \ --name MyHpcCacheПримечание.
Создание HPC Cache может занять до 20 минут.
Создание и настройка хранилища Azure
Создайте учетную запись хранения с помощью
az storage account createкоманды. Сначала определите переменнуюSTORAGE_ACCOUNT_NAMEсреды.Внимание
Для учетной записи хранения необходимо выбрать уникальное имя. Замените
uniquestorageaccountуказанным именем. Имена учетных записей хранения должны быть от 3 до 24 символов длиной и могут содержать только цифры и строчные буквы.STORAGE_ACCOUNT_NAME=uniquestorageaccountВ следующем примере создается учетная запись хранения в регионе "Восточная часть США" с номером SKU Standard_LRS. Укажите значение для --location и --sku.
az storage account create \ --name $STORAGE_ACCOUNT_NAME \ --resource-group $RESOURCE_GROUP \ --location eastus \ --sku Standard_LRSНазначьте роль участника данных BLOB-объектов хранилища в вашей подписке с помощью команды
az role assignment create. Сначала определите переменныеSTORAGE_ACCOUNT_IDсреды и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Создайте контейнер BLOB в учетной записи хранения с помощью команды
az storage container create. Сначала определите системную переменнуюCONTAINER_NAMEи замените имя для контейнера Blob.CONTAINER_NAME=mystoragecontaineraz storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --auth-mode loginПредоставьте разрешения учетной записи службы Azure HPC Cache для доступа к учетной записи хранения и контейнеру BLOB с помощью команд
az role assignment. Сначала определите переменныеHPC_CACHE_USERсреды и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Добавьте контейнер blob в кэш HPC в качестве целевого хранилища командой
az hpc-cache blob-storage-target add. В следующем примере создается контейнер BLOB-объектов с именем MyStorageTarget в кэше HPC MyHpcCache. Укажите значение --name, --cache-name и --virtual-name-name-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"
Настройка балансировки нагрузки клиента
Создайте частную зону DNS Azure для клиентских IP-адресов с помощью команды
az network private-dns zone create. Сначала определите переменнуюPRIVATE_DNS_ZONEсреды и укажите имя зоны.PRIVATE_DNS_ZONE="myhpccache.local"az network private-dns zone create \ --resource-group $RESOURCE_GROUP \ --name $PRIVATE_DNS_ZONEСоздайте DNS-связь между зоной Частная зона DNS Azure и виртуальной сетью
az network private-dns link vnet createс помощью команды. Замените значение --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Создайте круговое DNS-имя для клиентских IP-адресов с помощью команды
az network private-dns record-set a create. Сначала определите переменные средыDNS_NAME,HPC_MOUNTS0,HPC_MOUNTS1иHPC_MOUNTS2. Замените значение свойства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
Создайте постоянный том
Создайте файл с именем
pv-nfs.yaml, чтобы задать постоянный том, а затем вставьте следующий манифест. Замените значения свойстваserverиpath.--- apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs spec: capacity: storage: 10000Gi accessModes: - ReadWriteMany mountOptions: - vers=3 nfs: server: server.myhpccache.local path: /Получите учетные данные для кластера Kubernetes с помощью
az aks get-credentialsкоманды.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterСоздайте постоянный том с помощью
kubectl applyкоманды.kubectl apply -f pv-nfs.yamlПроверьте, что статус постоянного тома доступен с помощью команды
kubectl describe.kubectl describe pv pv-nfs
Создать запрос на постоянный том
Создайте файл с именем
pvc-nfs.yaml, чтобы определить запрос на постоянный том, а затем вставьте следующий манифест.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100GiСоздайте запрос на постоянный том с помощью команды
kubectl apply.kubectl apply -f pvc-nfs.yamlУбедитесь, что состояние запроса на постоянный том установлено в состояние Bound с помощью команды
kubectl describe.kubectl describe pvc pvc-nfs
Подключение HPC Cache к модулю pod
Создайте файл с именем
nginx-nfs.yaml, чтобы определить pod, использующий заявку на постоянный том, а затем вставьте следующий манифест.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Создайте pod, используя команду
kubectl apply.kubectl apply -f nginx-nfs.yamlУбедитесь, что модуль pod выполняется с помощью
kubectl describeкоманды.kubectl describe pod nginx-nfsУбедитесь, что том подключен в модуле pod с помощью
kubectl execкоманды для подключения к модулем pod.kubectl exec -it nginx-nfs -- shЧтобы проверить, подключен ли том, запустите
dfв читаемом человеком формате, используя параметр--human-readable(сокращенно-h).df -hСледующий пример напоминает выходные данные, возвращаемые командой:
Filesystem Size Used Avail Use% Mounted on ... server.myhpccache.local:/myfilepath 8.0E 0 8.0E 0% /mnt/azure/myfilepath ...
Следующие шаги
- Дополнительные сведения о Azure HPC Cache см. в разделе обзор HPC Cache.
- Дополнительные сведения об использовании NFS с AKS см. в разделе Ручное создание и использование тома Linux-сервера сетевой файловой системы (NFS) с AKS.