Интеграция Azure HPC Cache с Служба Azure Kubernetes (AKS)
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.Зарегистрируйте расширение в подписке
hpc-cache
Azure. Дополнительные сведения об использовании HPC Cache с Azure CLI см. в предварительных требованиях интерфейса командной строки HPC Cache.Просмотрите предварительные требования к HPC Cache. Перед запуском HPC Cache необходимо выполнить следующее:
- Для кэша требуется выделенная подсеть с доступными по крайней мере 64 IP-адресами.
- Подсеть не должна размещать другие виртуальные машины или контейнеры.
- Подсеть должна быть доступна с узлов AKS.
Если вам нужно запустить приложение в качестве пользователя без доступа к корневому каталогу, может потребоваться отключить корневой скваширование с помощью команды изменения владельца (chown) для изменения владельца каталога на другого пользователя. Пользователь без корневого доступа должен иметь каталог для доступа к файловой системе. Чтобы пользователь владел каталогом, корневой пользователь должен отклонять каталог этому пользователю, но если hpC Cache скваширует корневой каталог, эта операция запрещена, так как корневой пользователь (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_ID
SUBNET_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=MyHpcCacheSubnet
az 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=mystoragecontainer
az 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"
Настройка балансировки нагрузки клиента
Создайте зону azure Частная зона DNS для 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
Убедитесь, что состояние утверждения постоянного тома привязано с помощью
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.
Azure Kubernetes Service