Este tópico explica como montar um volume do Cloud Parallel File System (CPFS) General-purpose Edition, provisionado estaticamente, em uma carga de trabalho em um cluster ACK. O CPFS foi desenvolvido para cargas de computação de alto desempenho (HPC), como treinamento de IA, direção autônoma, computação genômica e renderização de vídeo.
Pré-requisitos
Antes de começar, verifique se você possui:
csi-plugin e csi-provisioner na versão
v1.22.11-abbb810e-aliyunou posterior. Para atualizar, consulte Atualizar componentes CSI.
Limites
|
Limite |
Detalhes |
|
Disponibilidade por região |
O CPFS General-purpose Edition está disponível apenas em regiões específicas. Consulte Regiões disponíveis. |
|
Protocolo de montagem |
Suporta apenas NFS. Não há suporte ao protocolo POSIX. |
|
Arquitetura do nó |
Apenas x86. Não há suporte a nós ContainerOS. |
|
Rede |
A montagem dos volumes ocorre apenas em clusters na mesma VPC. Não há suporte a montagem entre VPCs diferentes. |
|
Provisionamento |
Apenas provisionamento estático. Não há suporte a provisionamento dinâmico. |
Configure componentes de armazenamento
O método de configuração depende da versão do seu csi-plugin.
csi-plugin 1,33 ou posterior
Instale o componente cnfs-nas-daemon e ative a FeatureGate AlinasMountProxy=true no csi-plugin. Isso permite que o componente CSI delegue a montagem ao cnfs-nas-daemon. Para mais detalhes, consulte Gerencie o componente cnfs-nas-daemon.
csi-plugin anterior à versão 1,33
-
Aplique um ConfigMap para habilitar a montagem NFS para o CPFS General-purpose Edition.
cat << EOF | kubectl apply -f - apiVersion: v1 kind: ConfigMap metadata: name: csi-plugin namespace: kube-system data: cpfs-nas-enable: "true" EOF -
Reinicie o csi-plugin para instalar as dependências necessárias. Essa ação não afeta os serviços em execução.
kubectl -n kube-system rollout restart daemonset csi-pluginSaída esperada:
daemonset.apps/csi-plugin restarted
Etapa 1: Crie um sistema de arquivos CPFS e um serviço de protocolo
Antes de criar um volume persistente (PV), você precisa de um sistema de arquivos CPFS, de um serviço de protocolo e do endereço de montagem desse serviço.
-
Criar um sistema de arquivos CPFS General-purpose Edition.
Crie o sistema de arquivos na mesma região do seu cluster.
Caso já possua um sistema de arquivos, abra o console NAS, acesse File System List, clique em no sistema de arquivos e verifique sua versão na página Basic Information. A versão deve ser 2.3.0 ou posterior. Se for anterior, crie um novo sistema de arquivos.
-
Criar um serviço de protocolo.
Utilize a mesma VPC e o mesmo vSwitch do seu cluster.
Se você já tiver um serviço de protocolo, verifique se ele está na mesma VPC do cluster. Caso contrário, crie um novo.
Obtenha o endereço de montagem do serviço de protocolo. Na página Protocol Service, clique em Export Directory. Na coluna Mount Address, copie o endereço. Esse endereço combina o nome de domínio do destino de montagem com o caminho do diretório exportado, por exemplo:
cpfs-****.<region-id>.cpfs.aliyuncs.com:/share.
Etapa 2: Crie um PV e um PVC
Um volume persistente (PV) representa o armazenamento CPFS provisionado. Uma solicitação de volume persistente (PVC) se vincula a esse PV para que os pods possam utilizá-lo.
-
Crie o PV e o PVC.
-
Salve o conteúdo a seguir como
cpfs-pv-pvc.yaml.apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-pv labels: alicloud-pvname: cpfs-pv # Label used by the PVC selector to bind to this PV spec: accessModes: - ReadWriteMany # Allows multiple nodes to read and write simultaneously capacity: storage: 20Gi csi: driver: nasplugin.csi.alibabacloud.com volumeAttributes: mountProtocol: cpfs-nfs # Mount over NFS protocol path: "/share" # Exported directory path; can be a subdirectory, e.g. /share/dir volumeAs: subpath # Creates a subdirectory-type PV server: "cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com" # Domain name from the mount address volumeHandle: cpfs-pv # Must match the PV name above mountOptions: - rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport - vers=3 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi # Must not exceed the PV capacity selector: matchLabels: alicloud-pvname: cpfs-pv # Binds to the PV with this labelParâmetros do PV
Parâmetro
Descrição
Obrigatório
Padrão
labelsRótulo usado pelo seletor do PVC para corresponder e vincular a este PV.
Sim
—
accessModesModo de acesso do PV.
Sim
—
capacity.storageCapacidade de armazenamento do volume.
Sim
—
csi.driverTipo de driver CSI. Defina como
nasplugin.csi.alibabacloud.com.Sim
—
csi.volumeAttributes.mountProtocolProtocolo de montagem. Defina como
cpfs-nfspara montar via NFS.Sim
—
csi.volumeAttributes.pathDiretório exportado do serviço de protocolo CPFS, como
/share. Também pode ser um subdiretório, como/share/dir.Sim
—
csi.volumeAttributes.volumeAsTipo de PV. Defina como
subpathpara um PV do tipo subdiretório.Sim
—
csi.volumeAttributes.serverNome de domínio obtido no endereço de montagem do serviço de protocolo CPFS.
Sim
—
csi.volumeHandleIdentificador exclusivo do volume. Deve corresponder ao nome do PV.
Sim
—
Parâmetros do PVC
Parâmetro
Descrição
Obrigatório
Padrão
accessModesModo de acesso solicitado pelo PVC ao PV.
Sim
—
selector.matchLabelsSeletor de rótulos usado para vincular a um PV específico.
Sim
—
resources.requests.storageCapacidade de armazenamento solicitada pelo pod. Não deve exceder a capacidade do PV.
Sim
—
-
Aplique o manifesto.
kubectl apply -f cpfs-pv-pvc.yaml
-
-
Verifique se o PVC está vinculado ao PV.
kubectl get pvc cpfs-pvcA saída deve mostrar
STATUS: Bound:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-pvc Bound cpfs-pv 20Gi RWO <unset> 18m
Etapa 3: Implantar uma aplicação e verifique a montagem
-
Crie um StatefulSet que utilize o volume CPFS.
-
Salve o conteúdo a seguir como
cpfs-test.yaml.apiVersion: apps/v1 kind: StatefulSet metadata: name: cpfs-sts spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 volumeMounts: - name: cpfs-pvc mountPath: /data volumes: - name: cpfs-pvc persistentVolumeClaim: claimName: cpfs-pvc -
Aplique o manifesto.
kubectl apply -f cpfs-test.yaml
-
-
Verifique se o volume CPFS está montado.
kubectl exec cpfs-sts-0 -- mount | grep /dataUma montagem bem-sucedida exibe uma entrada NFS em
/datacomvers=3:cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com:/share on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,port=30000,timeo=600,retrans=2,sec=sys,mountaddr=127.0.1.255,mountvers=3,mountport=30000,mountproto=tcp,local_lock=all,addr=127.0.1.255)