Este guia descreve como pode estabelecer ligação a uma instância do Lustre gerida existente através do controlador CSI do Lustre gerido. Isto permite-lhe aceder a instâncias do Lustre geridas existentes como volumes para as suas cargas de trabalho com estado, de forma controlada e previsível.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Cloud Managed Lustre e a API Google Kubernetes Engine. Ativar APIs
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
- Para ver as limitações e os requisitos, consulte a [vista geral do controlador CSI].
- Certifique-se de que ativa o controlador CSI Lustre gerido. Está desativado por predefinição nos clusters Standard e Autopilot.
Configure variáveis de ambiente
Configure as seguintes variáveis de ambiente:
export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE
Substitua o seguinte:
CLUSTER_NAME
: o nome do cluster.PROJECT_ID
: o seu Google Cloud ID do projeto.LUSTRE_NETWORK
: a rede de nuvem privada virtual partilhada onde residem o cluster do GKE e a instância do Managed Lustre.ZONE
: a zona geográfica do seu cluster do GKE; por exemplo,us-central1-a
.
Configure o controlador CSI Lustre gerido
Esta secção aborda como pode ativar e desativar o controlador CSI Lustre gerido, se necessário.
Ative o controlador CSI Lustre gerido num novo cluster do GKE
Para ativar o controlador CSI Lustre gerido quando criar um novo cluster do GKE, siga estes passos:
Piloto automático
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=1.33.2-gke.1111000 \
--enable-lustre-csi-driver \
--enable-legacy-lustre-port
Standard
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=1.33.2-gke.1111000 \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
Ative o controlador CSI Lustre gerido num cluster do GKE existente
Se quiser ativar o controlador CSI Lustre gerido num cluster do GKE existente, use o seguinte comando:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--enable-legacy-lustre-port
Depois de o controlador CSI Lustre gerido ser ativado no cluster, pode reparar que os nós foram recriados e que os nós da CPU parecem estar a usar uma imagem de GPU no resultado da consola ou da CLI.Google Cloud Por exemplo:
config:
imageType: COS_CONTAINERD
nodeImageConfig:
image: gke-1330-gke1552000-cos-121-18867-90-4-c-nvda
Este comportamento é o esperado. A imagem da GPU está a ser reutilizada em nós da CPU para instalar em segurança os módulos do kernel do Lustre gerido. Não lhe é cobrado um valor excessivo pela utilização da GPU.
Desative o controlador CSI Lustre gerido
Pode desativar o controlador CSI Lustre gerido num cluster do GKE existente através da CLI Google Cloud.
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
Assim que o controlador CSI for desativado, os nós são recriados automaticamente e os módulos do kernel do Lustre gerido são desinstalados dos nós do GKE.
Aceda a uma instância do Lustre gerido existente através do controlador CSI do Lustre gerido
Se já aprovisionou uma instância do Lustre gerida na mesma rede que o cluster do GKE, pode seguir estas instruções para aprovisionar estaticamente um PersistentVolume que se refere à sua instância.
As secções seguintes descrevem o processo típico de acesso a uma instância do Lustre gerida existente através do controlador CSI do Lustre gerido:
- Crie um PersistentVolume que faça referência à instância do Lustre gerido.
- Use um PersistentVolumeClaim para aceder ao volume.
- Crie uma carga de trabalho que consuma o volume.
Crie um PersistentVolume
Para localizar a sua instância do Lustre gerido, execute o seguinte comando.
gcloud lustre instances list \ --project=${PROJECT_ID} \ --location=${LOCATION}
O resultado deve ser semelhante ao seguinte. Antes de avançar para o passo seguinte, certifique-se de que anota os campos nome da instância do Lustre gerida, sistema de ficheiros e mountPoint.
capacityGib: '9000' createTime: '2025-04-28T22:42:11.140825450Z' filesystem: testlfs gkeSupportEnabled: true mountPoint: 10.90.1.4@tcp:/testlfs name: projects/my-project/locations/us-central1-a/instances/my-lustre network: projects/my-project/global/networks/default perUnitStorageThroughput: '1000' state: ACTIVE updateTime: '2025-04-28T22:51:41.559098631Z'
Guarde o seguinte manifesto num ficheiro com o nome
lustre-pv.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: 9000Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem claimRef: namespace: default name: lustre-pvc csi: driver: lustre.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME" volumeAttributes: ip: IP_ADDRESS filesystem: FILESYSTEM
Substitua o seguinte:
storageClassName
: o nome da sua StorageClass. O valor pode ser uma string vazia, mas tem de cumprir a especificação do seu PersistentVolumeClaim.volumeHandle
: o identificador deste volume.- PROJECT_ID: o Google Cloud ID do projeto.
- LOCATION: a localização zonal da sua instância do Lustre. Tem de especificar uma zona suportada para o controlador CSI Lustre gerido.
- INSTANCE_NAME: o nome da sua instância do Lustre.
ip
: o endereço IP da sua instância do Lustre. Obtém este valor do campomountPoint
no resultado do comando anterior.filesystem
: o nome do sistema de ficheiros da sua instância do Managed Lustre.
Para ver a lista completa de campos suportados no objeto PersistentVolume, consulte a documentação de referência do controlador CSI do Lustre gerido.
Execute este comando para criar o PersistentVolume:
kubectl apply -f lustre-pv.yaml
Use o PersistentVolumeClaim para aceder ao volume
Pode criar um recurso PersistentVolumeClaim que faça referência à StorageClass do controlador CSI Lustre gerido.
O ficheiro de manifesto seguinte mostra um exemplo de como criar um
PersistentVolumeClaim no ReadWriteMany
modo de acesso ,
que faz referência à StorageClass que criou anteriormente.
Guarde o seguinte manifesto num ficheiro com o nome
lustre-pvc.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: lustre-pvc spec: accessModes: - ReadWriteMany storageClassName: "STORAGE_CLASS_NAME" volumeName: lustre-pv resources: requests: storage: STORAGE_SIZE
Substitua STORAGE_SIZE pelo tamanho do armazenamento; por exemplo,
9000Gi
. Tem de corresponder à especificação no seu PersistentVolume.Execute este comando para criar o PersistentVolumeClaim:
kubectl create -f lustre-pvc.yaml
Crie uma carga de trabalho que consuma o volume
Esta secção mostra como criar um Pod que consuma o recurso PersistentVolumeClaim que criou anteriormente.
Vários pods podem partilhar o mesmo recurso PersistentVolumeClaim.
Guarde o seguinte manifesto num ficheiro com o nome
my-pod.yaml
.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: lustre-volume mountPath: /data volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvc
Execute o seguinte comando para aplicar o manifesto ao cluster:
kubectl apply -f my-pod.yaml
O pod aguarda até que o GKE aprovisione o PersistentVolumeClaim antes de começar a ser executado. Esta operação pode demorar vários minutos a ser concluída.
Verifique se o Pod está em execução:
kubectl get pods
O Pod pode demorar alguns minutos a atingir o estado
Running
.O resultado é semelhante ao seguinte:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
Use fsGroup com volumes Lustre geridos
Pode alterar a propriedade do grupo do diretório de nível raiz do sistema de ficheiros montado para corresponder a um fsGroup pedido pelo utilizador especificado no SecurityContext do pod.
Resolução de problemas
Para ver orientações de resolução de problemas, consulte a página de resolução de problemas na documentação do Lustre gerido.
Limpar
Para evitar incorrer em cobranças na sua conta do Google Cloud , elimine os recursos de armazenamento que criou neste guia.
Elimine o pod e o PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvc
Verifique o estado do PersistentVolume. Depois de eliminar o Pod e o PersistentVolumeClaim, o PersistentVolume deve comunicar um estado "Released":
kubectl get pv
O resultado é semelhante ao seguinte:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Released default/preprov-pvc 2m28s
Reutilize o PersistentVolume. Para reutilizar o PersistentVolume, remova a referência da reivindicação (
claimRef
):kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'
O PersistentVolume deve agora comunicar um estado "Disponível", o que indica que está pronto para ser associado a um novo PersistentVolumeClaim. Verifique o estado do PersistentVolume:
kubectl get pv
O resultado é semelhante ao seguinte:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Available 19m
Elimine o PersistentVolume se já não for necessário. Se o PersistentVolume já não for necessário, elimine-o:
kubectl delete pv lustre-pv
A eliminação do PersistentVolume não remove a instância do Lustre gerida subjacente.