Provisionar o Managed Lustre no GKE usando o Cluster Toolkit

Este documento explica como integrar o Managed Lustre ao GKE para criar um ambiente otimizado para cargas de trabalho exigentes e com uso intensivo de dados, como inteligência artificial (IA), machine learning (ML) e computação de alto desempenho (HPC), usando o Cluster Toolkit.

Neste documento, você vai provisionar um cluster do GKE e uma instância do Managed Lustre de forma declarativa com o Cluster Toolkit, configurar automaticamente o driver CSI do Managed Lustre e os recursos PersistentVolume do Kubernetes e executar uma carga de trabalho de amostra no cluster.

Este documento é destinado a engenheiros de machine learning (ML) e especialistas em dados e IA que querem conhecer os recursos de orquestração de contêineres do Kubernetes com suporte de instâncias do Managed Lustre. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e papéis de usuário comuns do GKE.

Contexto

Esta seção descreve as principais tecnologias usadas neste documento.

Cluster Toolkit

O Cluster Toolkit é uma ferramenta de código aberto que simplifica a implantação e o gerenciamento de ambientes de IA/ML e HPC no Google Cloud. O Cluster Toolkit usa projetos modulares e declarativos para automatizar o provisionamento de clusters do GKE, redes, aceleradores de computação e armazenamento de alta performance.

Para mais informações, consulte a visão geral do Cluster Toolkit.

Managed Lustre

O Managed Lustre é um serviço de sistema de arquivos paralelo de alto desempenho projetado para cargas de trabalho exigentes. O driver CSI do Managed Lustre permite integrar instâncias do Managed Lustre ao GKE usando PersistentVolumeClaims (PVCs) e PersistentVolumes (PVs) padrão do Kubernetes . Esse driver é especialmente útil para cargas de trabalho de IA/ML e HPC que exigem armazenamento persistente, escalonável e de alta capacidade.

Para mais informações, consulte Sobre o driver CSI do Lustre gerenciado.

Opções de consumo do acelerador

Com as VMs de início flexível e as VMs spot, é possível otimizar o provisionamento de computação pagando apenas pelos recursos necessários. Para mais informações, consulte Sobre as opções de consumo de aceleradores para cargas de trabalho de IA/ML no GKE.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ative a API Google Cloud Managed Lustre e a API Google Kubernetes Engine.
  • Ativar APIs
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Preparar o ambiente

  1. Configure o Cluster Toolkit.

  2. Defina as variáveis de ambiente padrão e receba o endereço IP da máquina de implantação:

    gcloud config set project PROJECT_ID
    export PROJECT_ID=$(gcloud config get project)
    export REGION=REGION
    export ZONE=ZONE
    export DEPLOYMENT_NAME=DEPLOYMENT_NAME
    export AUTHORIZED_CIDR="$(curl -s ifconfig.me)/32"
    

    Substitua os seguintes valores:

    • PROJECT_ID: o ID do projeto Google Cloud .
    • REGION: a região da implantação, por exemplo, us-central1.
    • ZONE: uma zona compatível com o Managed Lustre, por exemplo, us-central1-a.
    • DEPLOYMENT_NAME: o nome da implantação.

Implantar o cluster e o armazenamento

  1. Implante a infraestrutura usando o blueprint examples/gke-managed-lustre.yaml do repositório do Cluster Toolkit:

    gcluster deploy examples/gke-managed-lustre.yaml \
        --vars project_id=${PROJECT_ID},deployment_name=${DEPLOYMENT_NAME},region=${REGION},zone=${ZONE},authorized_cidr=${AUTHORIZED_CIDR}
    

    O Cluster Toolkit provisiona a VPC, cria a instância do Managed Lustre, provisiona o cluster do GKE com o driver CSI do Managed Lustre ativado e cria o PersistentVolume e o PersistentVolumeClaim do Kubernetes.

  2. Configure kubectl para acessar o novo cluster:

    gcloud container clusters get-credentials ${DEPLOYMENT_NAME} \
        --zone=${ZONE} \
        --project=${PROJECT_ID}
    

Executar uma carga de trabalho com o Managed Lustre

Envie uma carga de trabalho que monte o volume do Managed Lustre usando o comando gcluster job submit. Para mais informações sobre as opções de envio de jobs, consulte o guia de envio de jobs do Cluster Toolkit.

gcluster job submit \
    --name="test-lustre-$(date +%H%M)" \
    --cluster=${DEPLOYMENT_NAME} \
    --project=${PROJECT_ID} \
    --location=${ZONE} \
    --compute-type=n2-standard-16 \
    --image=ubuntu:latest \
    --command="df -h && echo 'Hello from Managed Lustre on GKE' > /lustre-data/hello.txt && cat /lustre-data/hello.txt" \
    --mount="gke-lustre-instance-pvc;/lustre-data;rw"

Para inspecionar os registros de carga de trabalho e o status de execução, use o comando gcluster job logs:

gcluster job logs "test-lustre-$(date +%H%M)" \
    --cluster=${DEPLOYMENT_NAME} \
    --project=${PROJECT_ID} \
    --location=${ZONE}

O resultado será o seguinte:

Filesystem                Size  Used Avail Use% Mounted on
overlay                   193G   11G  183G   6% /
tmpfs                      64M     0   64M   0% /dev
10.8.68.5@tcp://lustrefs   35T   22M   35T   1% /lustre-data
shm                        64M     0   64M   0% /dev/shm
Hello from Managed Lustre on GKE

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste documento, exclua a implantação usando o Cluster Toolkit:

gcluster destroy ${DEPLOYMENT_NAME}

A seguir