Compartilhar um volume NFS entre namespaces
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.
Início rápido
Você pode configurar o compartilhamento de volumes NFS em apenas alguns passos.
Configure 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.
Conceder 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.
Crie uma TridentVolumeReference no namespace de destino.O proprietário do namespace de destino cria o CR TridentVolumeReference para se referir ao PVC de origem.
Crie 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.
-
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 oshareToNamespaceanotaçã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: 100GiO Trident cria o PV e seu volume de armazenamento NFS de backend.
-
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
shareToNamespaceAnotações a qualquer momento.
-
-
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.
-
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 -
Proprietário do namespace de destino: Criar um PVC(
pvc2) no espaço de nomes de destino(namespace2) usando oshareFromPVCAnotaçã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: 100GiO diâmetro do tubo de PVC de destino deve ser menor ou igual ao do tubo de PVC de origem.
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
shareToNamespaceoushareFromNamespaceanotações ou exclusão dasTridentVolumeReferenceCR. 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:
-
Veja a demonstração em"NetAppTV" .