O Container Compute Service (ACS) permite montar sistemas de arquivos CPFS for Lingjun. Vários pods podem montar o sistema simultaneamente para compartilhar dados.
Pré-requisitos
-
Você criou um cluster ACS.
No ACS, a plataforma gerencia os componentes CSI (bmcpfs-csi-controller, bmcpfs-csi-node e cnfs-nas-daemon). Não é necessário gerenciar versões ou atualizações desses componentes.
Você criou um sistema de arquivos CPFS for Lingjun e registrou o ID do sistema de arquivos. Para mais informações, consulte Crie um sistema de arquivos CPFS for Lingjun.
Se um pod for agendado em um nó sem suporte a RDMA ou se o cenário envolver acesso entre domínios de afinidade computação-armazenamento diferentes, crie previamente um ponto de montagem VPC e anote o nome de domínio do ponto de montagem (no formato
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com). A VPC do ponto de montagem deve ser a mesma do cluster ACS. Para mais informações, consulte Gerencie pontos de montagem VPC.
Etapa 1: Criar um PV e um PVC
Escolha o modelo apropriado conforme o tipo de pod:
Pods GPU Lingjun no mesmo domínio de afinidade computação-armazenamento: Use o "Método A: RDMA".
Pods CPU ou acesso Lingjun entre domínios de afinidade computação-armazenamento: Use o "Método B: Ponto de montagem VPC".
Quando um pod Lingjun do ACS está no mesmo domínio de afinidade computação-armazenamento que o CPFS, ele acessa o sistema de arquivos via montagem direta VSC + RDMA para obter o melhor desempenho. Para pods CPU ou acesso Lingjun entre domínios de afinidade computação-armazenamento, o acesso ocorre por meio de um ponto de montagem VPC. Para entender o conceito e o método de determinação dos domínios de afinidade computação-armazenamento, consulte Overview of mount access .
Rede RDMA
kubectl CLI
-
Crie um arquivo chamado
cpfs-pv-pvc.yamlpara definir o PV e o PVC:apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: bmcpfsplugin.csi.alibabacloud.com volumeAttributes: filesystemId: bmcpfs-***** path: / volumeHandle: bmcpfs-***** --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test resources: requests: storage: 10TiDescrição dos parâmetros:
-
Parâmetros do PersistentVolume
Parâmetro
Descrição
labelsRótulos do PersistentVolume. Um PersistentVolumeClaim usa um
selectorpara se vincular a um PersistentVolume correspondendo a esses rótulos.accessModesModo de acesso do PersistentVolume.
capacity.storageCapacidade do volume.
csi.driverDriver CSI. Defina o valor como
bmcpfsplugin.csi.alibabacloud.com.csi.volumeAttributesAtributos do volume CPFS.
-
filesystemId: ID do sistema de arquivos CPFS for LINGJUN. -
path: Diretório a ser montado. O valor padrão é/, que indica o diretório raiz do sistema de arquivos CPFS. Também é possível especificar um subdiretório, como/dir. Se o subdiretório não existir, ele será criado automaticamente durante a montagem.
csi.volumeHandleID do sistema de arquivos CPFS for LINGJUN.
-
-
Parâmetros do PersistentVolumeClaim
Parâmetro
Descrição
accessModesModo de acesso solicitado pelo PersistentVolumeClaim.
selectorSeletor usado para localizar um PersistentVolume correspondente com base nos rótulos.
resources.requests.storageQuantidade de armazenamento solicitada pelo PersistentVolumeClaim. O valor não pode exceder a capacidade do PersistentVolume.
-
-
Execute o comando de criação:
kubectl create -f cpfs-pv-pvc.yaml -
Confirme se o PVC está vinculado ao PV.
kubectl get pvc cpfs-testExemplo de saída (um status Bound indica sucesso):
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
Console
Faça login no console do ACS.
Na página Clusters, clique em o nome do cluster desejado para acessar sua página de gerenciamento.
-
No painel de navegação à esquerda, escolha , clique em Create e conclua a seguinte configuração:
Parâmetro
Descrição
Exemplo
PVC Type
Selecione CPFS.
CPFS
Name
Nome personalizado para o PVC. Para requisitos de nomenclatura, consulte as instruções na tela.
cpfs-pvc
Allocation Mode
Selecione Existing Volume ou Create Volume conforme necessário.
Create Volume
CPFS Type
Selecione CPFS for Lingjun.
CPFS for Lingjun
Access Mode
Suporta ReadWriteMany e ReadWriteOnce.
ReadWriteMany
File System ID
Configure o ID do sistema de arquivos CPFS for Lingjun a ser montado.
bmcpfs-011513q5
-
Visualize o PV e o PVC criados.
Nas páginas PersistentVolumeClaims e Volumes, visualize o PV e o PVC recém-criados. Confirme se eles estão vinculados.
Rede VPC
Aplica-se a pods CPU, GPUs padrão (como T4 ou A10) e acesso GPU Lingjun entre domínios de afinidade computação-armazenamento.
-
Crie um arquivo chamado
cpfs-pv-pvc.yamlpara definir o PV e o PVC:apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-test labels: alicloud-pvname: cpfs-test # [PV label] Used by the PVC to bind to this PV spec: accessModes: - ReadWriteMany capacity: storage: 10Ti csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: efc server: cpfs-***-vpc-***.cn-wulanchabu.cpfs.aliyuncs.com # Replace with your VPC mount point domain name path: / autoSwitch: "true" # Optional. Enables automatic VSC/VPC switching (recommended for Lingjun cross-AZ scenarios) volumeHandle: bmcpfs-***** # Replace with your CPFS for Lingjun file system ID --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-test # [PVC name] Referenced by the Deployment spec: accessModes: - ReadWriteMany selector: matchLabels: alicloud-pvname: cpfs-test # [PVC selector] Must match the PV label resources: requests: storage: 10TiDescrição dos parâmetros:
-
Parâmetros do PersistentVolume
Parâmetro
Descrição
labelsRótulos do PersistentVolume. Um PersistentVolumeClaim usa um
selectorpara se vincular a um PersistentVolume correspondendo a esses rótulos.accessModesModo de acesso do PersistentVolume.
capacity.storageCapacidade do volume.
csi.driverDriver CSI. Defina o valor como
nasplugin.csi.alibabacloud.com.csi.volumeAttributesAtributos do volume CPFS.
-
mountProtocol: Protocolo de montagem. Defina o valor comoefc. -
server: Nome de domínio do ponto de montagem VPC do sistema de arquivos CPFS. -
path: Diretório a ser montado. O valor padrão é/, que indica o diretório raiz do sistema de arquivos CPFS. Também é possível especificar um subdiretório, como/dir. Se o subdiretório não existir, ele será criado automaticamente durante a montagem.
csi.volumeHandleID do sistema de arquivos CPFS for LINGJUN.
-
-
Parâmetros do PersistentVolumeClaim
Parâmetro
Descrição
accessModesModo de acesso solicitado pelo PersistentVolumeClaim.
selectorSeletor usado para localizar um PersistentVolume correspondente com base nos rótulos.
resources.requests.storageQuantidade de armazenamento solicitada pelo PersistentVolumeClaim. O valor não pode exceder a capacidade do PersistentVolume.
autoSwitch: Parâmetro opcional. Quando definido como"true", ativa a alternância automática VSC/VPC. Se GPUs Lingjun acessarem recursos entre zonas de disponibilidade, o sistema alterna automaticamente de RDMA para o canal VPC.
NotaO throughput do canal VPC é limitado pela largura de banda da rede, atingindo aproximadamente 3,2 GB/s (25 Gbps), valor inferior ao de uma conexão RDMA direta. Para cenários sensíveis a desempenho, recomendamos priorizar uma instância CPFS no mesmo domínio de afinidade computação-armazenamento.
-
-
Execute o comando de criação:
kubectl create -f cpfs-pv-pvc.yaml -
Confirme se o PVC está vinculado ao PV.
kubectl get pvc cpfs-testExemplo de saída (um status Bound indica sucesso):
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-test Bound cpfs-test 10Ti RWX <unset> <unset> 10s
Etapa 2: Criar uma aplicação e montar o CPFS
Crie um Deployment que referencie o PVC para montar o armazenamento em um diretório específico do contêiner. Escolha o método via CLI ou console conforme sua preferência.
kubectl
-
Crie um arquivo chamado
cpfs-test.yamlcom o seguinte conteúdo.Aplicação GPU
O exemplo YAML abaixo cria um Deployment com dois Pods. Ambos usam o rótulo
alibabacloud.com/compute-class: gpupara solicitar poder de computação baseado em GPU e um PersistentVolumeClaim (PVC) chamadocpfs-testpara solicitar recursos de armazenamento. O caminho de montagem para ambos os Pods é/data.NotaPara mais informações sobre modelos específicos de GPU, consulte Especifique modelos de GPU e versões de driver para Pods GPU do ACS.
apiVersion: apps/v1 kind: Deployment metadata: name: cpfs-test labels: app: cpfs-test spec: replicas: 2 selector: matchLabels: app: cpfs-test template: metadata: labels: app: cpfs-test # Specify the compute type as GPU. alibabacloud.com/compute-class: gpu # Specify the GPU model, for example, T4. alibabacloud.com/gpu-model-series: T4 alibabacloud.com/compute-qos: default spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-cpfs mountPath: /data volumes: - name: pvc-cpfs persistentVolumeClaim: claimName: cpfs-testAplicação CPU
O exemplo YAML a seguir cria um Deployment com 2 pods, que solicitam recursos de armazenamento usando um PVC chamado
cpfs-teste são ambos montados no caminho/data.apiVersion: apps/v1 kind: Deployment metadata: name: cpfs-test labels: app: cpfs-test spec: replicas: 2 selector: matchLabels: app: cpfs-test template: metadata: labels: app: cpfs-test spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-cpfs mountPath: /data volumes: - name: pvc-cpfs persistentVolumeClaim: claimName: cpfs-test -
Crie o Deployment e monte o volume CPFS.
kubectl create -f cpfs-test.yaml -
Verifique o status dos Pods no Deployment.
kubectl get pod | grep cpfs-testA saída esperada mostra dois Pods no estado 'Running'.
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s -
Verifique o caminho de montagem.
Este comando lista o conteúdo do diretório montado (/data), que contém dados do sistema de arquivos CPFS for LINGJUN. Por padrão, o diretório está vazio.
kubectl exec cpfs-test-****-***a -- ls /data
Console
No painel de navegação à esquerda da página de gerenciamento do cluster, escolha .
Na página Deployments, clique em Create from Image.
-
Configure os parâmetros do Deployment e clique em Create.
Os principais parâmetros estão descritos abaixo. Mantenha os valores padrão para os demais parâmetros. Para mais informações, consulte Crie uma aplicação stateless usando um Deployment.
Aplicação GPU
Seção
Parâmetro
Descrição
Exemplo
Basic Information
Application Name
Insira um nome exclusivo para o Deployment. O nome deve obedecer aos requisitos de formato exibidos na página.
cpfs-test
Replicas:
Número de réplicas de Pod para o Deployment.
2
Instance Type
Especifica os recursos de hardware para os Pods, como CPU ou um modelo específico de GPU.
NotaPara mais informações sobre modelos específicos de GPU, consulte Specify GPU models and driver versions for ACS GPU Pods.
GPU, T4
Container
Image Name
Imagem de contêiner usada para implantar a aplicação.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Quantidade de recursos de GPU, vCPU e memória a serem alocados para cada Pod.
GPU: 1
CPU: 2 vCPU
Memory: 2 GiB
Volume
Clique em Add PVC e configure os parâmetros.
Mount Source: Selecione o PersistentVolumeClaim existente.
Container Path: Insira o caminho dentro do contêiner onde o sistema de arquivos CPFS será montado.
Mount source: pvc-cpfs
Container path: /data
Aplicação CPU
Seção
Parâmetro
Descrição
Exemplo
Basic Information
Application Name
Insira um nome exclusivo para o Deployment. O nome deve obedecer aos requisitos de formato exibidos na página.
cpfs-test
Replicas:
Número de réplicas de Pod para o Deployment.
2
Instance Type
Tipo de computação do Pod.
CPU, General Purpose
Container
Image Name
Imagem de contêiner usada para implantar a aplicação.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Quantidade de recursos de vCPU e memória a serem alocados para cada Pod.
CPU: 0,25 vCPU
Memory: 0,5 GiB
Volume
Clique em Add PVC e configure os parâmetros.
Mount Source: Selecione o PersistentVolumeClaim existente.
Container Path: Insira o caminho dentro do contêiner onde o sistema de arquivos CPFS será montado.
Mount source: pvc-cpfs
Container path: /data
-
Verifique o status da aplicação.
Na página Deployments, clique em o nome da aplicação.
Na aba Pods, verifique se os Pods estão no estado 'Running'.
Etapa 3: Verificar a montagem
O Deployment criado no exemplo anterior contém dois Pods, e ambos montam o mesmo sistema de arquivos CPFS. Siga os passos abaixo para validar o armazenamento compartilhado e persistente:
Valide a persistência do armazenamento reiniciando o Deployment e verificando se os dados permanecem nos novos Pods criados.
-
Verifique os Pods.
kubectl get pod | grep cpfs-testExemplo de saída:
cpfs-test-****-***a 1/1 Running 0 45s cpfs-test-****-***b 1/1 Running 0 45s -
Valide o armazenamento compartilhado.
-
Crie um arquivo em um dos Pods.
Este exemplo usa o Pod chamado
cpfs-test-****-***a:kubectl exec cpfs-test-****-***a -- touch /data/test.txt -
Verifique a existência do arquivo no outro Pod.
Este exemplo usa o Pod chamado
cpfs-test-****-***b:kubectl exec cpfs-test-****-***b -- ls /dataA saída,
test.txt, confirma que o armazenamento é compartilhado.test.txt
-
-
Valide o armazenamento persistente.
-
Reinicie o Deployment.
kubectl rollout restart deploy cpfs-test -
Verifique o status dos Pods e aguarde a criação dos novos Pods.
kubectl get pod | grep cpfs-testExemplo de saída:
cpfs-test-****-***c 1/1 Running 0 78s cpfs-test-****-***d 1/1 Running 0 52s -
Confirme se os dados persistem no novo Pod.
Este exemplo usa o Pod chamado
cpfs-test-****-***c:kubectl exec cpfs-test-****-***c -- ls /dataEsta saída confirma que os dados no sistema de arquivos CPFS persistem e estão acessíveis no diretório de montagem do novo Pod.
test.txt
-