Skip to main content
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Compartilhar um volume NFS entre namespaces

Colaboradores netapp-aruldeepa

Usando o Trident, você pode criar um volume em um namespace primário e compartilhá-lo em um ou mais namespaces secundários.

Características

O CR TridentVolumeReference permite compartilhar com segurança volumes NFS ReadWriteMany (RWX) em um ou mais namespaces do Kubernetes. Essa solução nativa do Kubernetes oferece os seguintes benefícios:

  • Múltiplos níveis de controle de acesso para garantir a segurança.

  • Compatível com todos os drivers de volume Trident NFS.

  • Sem dependência do tridentctl ou de qualquer outro recurso não nativo do Kubernetes.

Este diagrama ilustra o compartilhamento de volumes NFS entre dois namespaces do Kubernetes.

Diagrama conceitual do compartilhamento entre espaços de nomes.

Início rápido

Você pode configurar o compartilhamento de volumes NFS em apenas alguns passos.

UmConfigure o PVC de origem para compartilhar o volume.

O proprietário do namespace de origem concede permissão para acessar os dados no PVC de origem.

DoisConceder permissão para criar uma solicitação de configuração (CR) no espaço de nomes de destino.

O administrador do cluster concede permissão ao proprietário do namespace de destino para criar o CR TridentVolumeReference.

TrêsCrie uma TridentVolumeReference no namespace de destino.

O proprietário do namespace de destino cria o CR TridentVolumeReference para se referir ao PVC de origem.

QuatroCrie o PVC subordinado no namespace de destino.

O proprietário do namespace de destino cria o PVC subordinado para usar a fonte de dados do PVC de origem.

Configure os namespaces de origem e destino.

Para garantir a segurança, o compartilhamento entre namespaces exige colaboração e ação do proprietário do namespace de origem, do administrador do cluster e do proprietário do namespace de destino. A função do usuário é definida em cada etapa.

Passos
  1. Proprietário do namespace de origem: Criar o PVC(pvc1 ) no namespace de origem que concede permissão para compartilhar com o namespace de destino(namespace2 ) usando o shareToNamespace anotação.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc1
      namespace: namespace1
      annotations:
        trident.netapp.io/shareToNamespace: namespace2
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: trident-csi
      resources:
        requests:
          storage: 100Gi

    O Trident cria o PV e seu volume de armazenamento NFS de backend.

    Observação
    • Você pode compartilhar o PVC com vários namespaces usando uma lista separada por vírgulas. Por exemplo, trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4 .

    • Você pode compartilhar com todos os namespaces usando * . Por exemplo, trident.netapp.io/shareToNamespace: *

    • Você pode atualizar o PVC para incluir o shareToNamespace Anotações a qualquer momento.

  2. Administrador do cluster: Certifique-se de que o RBAC adequado esteja em vigor para conceder permissão ao proprietário do namespace de destino para criar o TridentVolumeReference CR no namespace de destino.

  3. Proprietário do namespace de destino: Crie uma solicitação de configuração (CR) TridentVolumeReference no namespace de destino que faça referência ao namespace de origem. pvc1 .

    apiVersion: trident.netapp.io/v1
    kind: TridentVolumeReference
    metadata:
      name: my-first-tvr
      namespace: namespace2
    spec:
      pvcName: pvc1
      pvcNamespace: namespace1
  4. Proprietário do namespace de destino: Criar um PVC(pvc2 ) no espaço de nomes de destino(namespace2 ) usando o shareFromPVC Anotação para designar o PVC de origem.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      annotations:
        trident.netapp.io/shareFromPVC: namespace1/pvc1
      name: pvc2
      namespace: namespace2
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: trident-csi
      resources:
        requests:
          storage: 100Gi
    Observação O diâmetro do tubo de PVC de destino deve ser menor ou igual ao do tubo de PVC de origem.
Resultados

Trident lê o shareFromPVC A anotação no PVC de destino cria o PV de destino como um volume subordinado sem recurso de armazenamento próprio, que aponta para o PV de origem e compartilha o recurso de armazenamento do PV de origem. O PVC e o PV de destino parecem estar conectados normalmente.

Excluir um volume compartilhado

Você pode excluir um volume que é compartilhado entre vários namespaces. O Trident removerá o acesso ao volume no namespace de origem e manterá o acesso para outros namespaces que compartilham o volume. Quando todos os namespaces que fazem referência ao volume são removidos, o Trident exclui o volume.

Usar tridentctl get para consultar volumes subordinados

Usando o[tridentctl utilitário, você pode executar o get comando para obter volumes subordinados. Para obter mais informações, consulte o tridentctl comandos e opções.

Usage:
  tridentctl get [option]

Bandeiras:

  • ``-h, --help`Ajuda para volumes.

  • --parentOfSubordinate string: Limitar a consulta ao volume de origem subordinado.

  • --subordinateOf string: Limitar a consulta aos subordinados do volume.

Limitações

  • O Trident não pode impedir que os namespaces de destino gravem no volume compartilhado. Você deve usar bloqueio de arquivos ou outros processos para evitar a sobrescrita de dados em volumes compartilhados.

  • Não é possível revogar o acesso ao PVC de origem removendo o shareToNamespace ou shareFromNamespace anotações ou exclusão das TridentVolumeReference CR. Para revogar o acesso, você deve excluir o PVC subordinado.

  • Não é possível criar snapshots, clones ou espelhar volumes subordinados.

Para maiores informações

Para saber mais sobre acesso a volumes entre namespaces: