Trident: Objetos de instantâneo Trident não excluídos com deletePolicy Retain

Criado em 9 out. 2020  ·  4Comentários  ·  Fonte: NetApp/trident

CENÁRIO DE FALHA

  1. O PVC de origem é criado com reclaimPolicy: Retain
  2. Um objeto PVC snapshot.storage.k8s.io/v1beta1 é criado com deletionPolicy: Retain
  3. Um instantâneo pvc é criado com sucesso com reclaimPolicy: Retain e atributos:
dataSource:
    name: volumesnapshot-test-pvc-nfs-retain
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  1. Excluir instantâneo PVC, PV k8s relacionado excluído e Volume Trident
  2. Excluir objeto de instantâneo k8s e k8s volumeSnapshotContent
  3. O objeto Trident Snapshot não pode ser excluído:
    uma. Tridentctl get snapshot list mostra o snapshot na lista
    b. Tridentctl obter instantâneolança erro:
    tctl obter instantâneo instantâneo-abb03b32-432c-4c63-b550-a571050b787e
Error: could not get snapshot snapshot-abb03b32-432c-4c63-b550-a571050b787e: 404 Not Found
command terminated with exit code 1

c. Tridentctl excluir instantâneolança erro:

Error: could not delete snapshot snapshot-abb03b32-432c-4c63-b550-a571050b787e: 404 Not Found
command terminated with exit code 1

  1. Excluir trident PV, comando delete é executado com sucesso, mas PV ainda está pendente no Trident com estado "excluindo"

Se isso for um bug, por favor, examine-o, caso contrário, isso está causando muitos objetos de instantâneos restantes no tridente. Por favor, forneça instruções/orientações agora sobre como remover os objetos de instantâneo do tridente com o deletePolicy is Retain?

CENÁRIO DE SUCESSO

  1. O PVC de origem é reatado com reclaimPolicy: Delete
  2. Um objeto PVC snapshot.storage.k8s.io/v1beta1 é criado com deletionPolicy: Delete
  3. Um snapshot pvc é criado com sucesso com reclaimPolicy: Delete and attribute:
dataSource:
    name: volumesnapshot-test-pvc-nfs-delete
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  1. Excluir instantâneo PVC, PV relacionado é excluído
  2. Excluir PVC de origem k8s, PV está pendente no Trident com estado "excluindo"
  3. Excluir objeto k8s snapshot, k8s volumeSnapshotContent, Trident PV e objetos Trident Snapshot são removidos automaticamente

Os objetos Trident Snapshot são excluídos com sucesso com deleteRetain: Delete
Nesse caso, eles são removidos automaticamente após a exclusão de volumesnapshots.snapshot.storage.k8s.io

Ambiente
Forneça informações precisas sobre o ambiente para nos ajudar a reproduzir o problema.

  • Versão tridente: [20.07.01]
  • Sinalizadores de instalação do Trident usados: [tctl install --k8s-timeout 30m --csi --use-custom-yaml --silence-autosupport]
  • Tempo de execução do contêiner: [ Docker 19.03.13-CE]
  • Versão do Kubernetes: [1.19.2]
  • Orquestrador do Kubernetes: [k8s kubeadm]
  • SO: [RHEL 7.8]
  • Tipos de back-end da NetApp: [ontap-san, ontap-nas]
bug tracked

Todos 4 comentários

Oi @gnarl , Alguma atualização sobre isso?

Esse problema tem um efeito mais pronunciado no Element OS (provavelmente E-Series também) porque o número máximo de instantâneos nessas plataformas é menor que o ONTAP: enquanto no ONTAP o "único" problema são os instantâneos restantes, no Element OS a proteção de instantâneos para de funcionar porque sem expiração automatizada o número máximo de snapshots é alcançado em poucos dias.

@khankth ,

Acho que o problema aqui é que o volumeSnapshotContent tem a deletionPolicy de "Retain" e deve ser atualizado para "Delete" antes de excluir o volumeSnapshot e o volumeSnapshotConent se o objetivo for realmente excluir o instantâneo. Isso é diferente de como a exclusão de um PV com o reclaimPolicy definido como "Retain" funciona. Nesse caso, o K8S força você a definir editar o PV e alterar o reclaimPolicy para "Delete" antes de poder excluir o PV com sucesso.

Vou conversar com a equipe sobre como lidar com esse caso de uso.

@khankth ao excluir um instantâneo com tridentctl , você precisará usá-lo da seguinte forma:

 tridentctl delete snapshot -h
Delete one or more volume snapshots from Trident

Usage:
  tridentctl delete snapshot <volume/snapshot> [<volume/snapshot>...] [flags]

Aliases:
  snapshot, s, snap, snapshots

Flags:
      --all             Delete all snapshots
  -h, --help            help for snapshot
      --volume string   Delete all snapshots in volume

Global Flags:
  -d, --debug              Debug output
  -n, --namespace string   Namespace of Trident deployment
  -o, --output string      Output format. One of json|yaml|name|wide|ps (default)
  -s, --server string      Address/port of Trident REST interface


# tridentctl delete snapshot snapshot-9c214e0f-547d-41b5-923d-a075bcc97d8a pvc-fb6eabff-93b4-4df5-b5ab-943bcda44ad8 -n trident
Error: could not delete snapshot snapshot-9c214e0f-547d-41b5-923d-a075bcc97d8a: 404 Not Found
command terminated with exit code 1


# tridentctl delete snapshot pvc-fb6eabff-93b4-4df5-b5ab-943bcda44ad8/snapshot-9c214e0f-547d-41b5-923d-a075bcc97d8a -n trident


# tridentctl get snapshot -n trident
+------+--------+
| NAME | VOLUME |
+------+--------+
+------+--------+

Além disso, o outro erro que você apontou [ tridentctl get snapshot não retorna os detalhes do instantâneo] foi corrigido com a v21.04 neste commit .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

r0ss3 picture r0ss3  ·  6Comentários

leemmcc picture leemmcc  ·  4Comentários

alexandru-ersenie picture alexandru-ersenie  ·  6Comentários

ffilippopoulos picture ffilippopoulos  ·  4Comentários

kaparora picture kaparora  ·  5Comentários