Expandir volumes
O Trident oferece aos usuários do Kubernetes a capacidade de expandir seus volumes depois que eles são criados. Encontre informações sobre as configurações necessárias para expandir volumes iSCSI, NFS, SMB, NVMe/TCP e FC.
Expandir um volume iSCSI
Você pode expandir um Volume Persistente (PV) iSCSI usando o provisionador CSI.
|
|
A expansão de volume iSCSI é suportada pelo ontap-san , ontap-san-economy , solidfire-san requer drivers e Kubernetes 1.16 ou posterior.
|
Etapa 1: Configure a classe de armazenamento para suportar a expansão de volume.
Edite a definição da classe de armazenamento para definir o allowVolumeExpansion campo para true .
cat storageclass-ontapsan.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-san
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
allowVolumeExpansion: True
Para uma StorageClass já existente, edite-a para incluir o allowVolumeExpansion parâmetro.
Passo 2: Crie um PVC com a StorageClass que você criou.
Edite a definição de PVC e atualize o spec.resources.requests.storage para refletir o novo tamanho desejado, que deve ser maior que o tamanho original.
cat pvc-ontapsan.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: san-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-san
A Trident cria um Volume Persistente (PV) e o associa a esta Reivindicação de Volume Persistente (PVC).
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO ontap-san 8s kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO Delete Bound default/san-pvc ontap-san 10s
Etapa 3: Defina um compartimento que conecte o PVC.
Conecte o PV a um pod para que ele possa ser redimensionado. Existem dois cenários ao redimensionar um PV iSCSI:
-
Se o PV estiver conectado a um pod, o Trident expande o volume no backend de armazenamento, verifica novamente o dispositivo e redimensiona o sistema de arquivos.
-
Ao tentar redimensionar um PV não anexado, o Trident expande o volume no servidor de armazenamento. Após o PVC ser vinculado a um pod, o Trident verifica novamente o dispositivo e redimensiona o sistema de arquivos. Em seguida, o Kubernetes atualiza o tamanho do PVC após a conclusão bem-sucedida da operação de expansão.
Neste exemplo, é criado um pod que utiliza o san-pvc .
kubectl get pod
NAME READY STATUS RESTARTS AGE
ubuntu-pod 1/1 Running 0 65s
kubectl describe pvc san-pvc
Name: san-pvc
Namespace: default
StorageClass: ontap-san
Status: Bound
Volume: pvc-8a814d62-bd58-4253-b0d1-82f2885db671
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: ubuntu-pod
Etapa 4: Expandir o PV
Para redimensionar o PV criado de 1Gi para 2Gi, edite a definição do PVC e atualize o spec.resources.requests.storage para 2Gi.
kubectl edit pvc san-pvc
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
creationTimestamp: "2019-10-10T17:32:29Z"
finalizers:
- kubernetes.io/pvc-protection
name: san-pvc
namespace: default
resourceVersion: "16609"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/san-pvc
uid: 8a814d62-bd58-4253-b0d1-82f2885db671
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
# ...
Etapa 5: Valide a expansão
Você pode verificar se a expansão funcionou corretamente conferindo o tamanho do PVC, do PV e o volume do Trident :
kubectl get pvc san-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO ontap-san 11m kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO Delete Bound default/san-pvc ontap-san 12m tridentctl get volumes -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-8a814d62-bd58-4253-b0d1-82f2885db671 | 2.0 GiB | ontap-san | block | a9b7bfff-0505-4e31-b6c5-59f492e02d33 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Expandir um volume FC
Você pode expandir um Volume Persistente (PV) FC usando o provisionador CSI.
|
|
A expansão do volume FC é suportada pelo ontap-san O driver requer Kubernetes 1.16 ou posterior.
|
Etapa 1: Configure a classe de armazenamento para suportar a expansão de volume.
Edite a definição da classe de armazenamento para definir o allowVolumeExpansion campo para true .
cat storageclass-ontapsan.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontap-san
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
allowVolumeExpansion: True
Para uma StorageClass já existente, edite-a para incluir o allowVolumeExpansion parâmetro.
Passo 2: Crie um PVC com a StorageClass que você criou.
Edite a definição de PVC e atualize o spec.resources.requests.storage para refletir o novo tamanho desejado, que deve ser maior que o tamanho original.
cat pvc-ontapsan.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: san-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: ontap-san
A Trident cria um Volume Persistente (PV) e o associa a esta Reivindicação de Volume Persistente (PVC).
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO ontap-san 8s kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 1Gi RWO Delete Bound default/san-pvc ontap-san 10s
Etapa 3: Defina um compartimento que conecte o PVC.
Conecte o PV a um pod para que ele possa ser redimensionado. Existem dois cenários ao redimensionar um painel fotovoltaico de célula de combustível:
-
Se o PV estiver conectado a um pod, o Trident expande o volume no backend de armazenamento, verifica novamente o dispositivo e redimensiona o sistema de arquivos.
-
Ao tentar redimensionar um PV não anexado, o Trident expande o volume no servidor de armazenamento. Após o PVC ser vinculado a um pod, o Trident verifica novamente o dispositivo e redimensiona o sistema de arquivos. Em seguida, o Kubernetes atualiza o tamanho do PVC após a conclusão bem-sucedida da operação de expansão.
Neste exemplo, é criado um pod que utiliza o san-pvc .
kubectl get pod
NAME READY STATUS RESTARTS AGE
ubuntu-pod 1/1 Running 0 65s
kubectl describe pvc san-pvc
Name: san-pvc
Namespace: default
StorageClass: ontap-san
Status: Bound
Volume: pvc-8a814d62-bd58-4253-b0d1-82f2885db671
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: ubuntu-pod
Etapa 4: Expandir o PV
Para redimensionar o PV criado de 1Gi para 2Gi, edite a definição do PVC e atualize o spec.resources.requests.storage para 2Gi.
kubectl edit pvc san-pvc
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
creationTimestamp: "2019-10-10T17:32:29Z"
finalizers:
- kubernetes.io/pvc-protection
name: san-pvc
namespace: default
resourceVersion: "16609"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/san-pvc
uid: 8a814d62-bd58-4253-b0d1-82f2885db671
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
# ...
Etapa 5: Valide a expansão
Você pode verificar se a expansão funcionou corretamente conferindo o tamanho do PVC, do PV e o volume do Trident :
kubectl get pvc san-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE san-pvc Bound pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO ontap-san 11m kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-8a814d62-bd58-4253-b0d1-82f2885db671 2Gi RWO Delete Bound default/san-pvc ontap-san 12m tridentctl get volumes -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-8a814d62-bd58-4253-b0d1-82f2885db671 | 2.0 GiB | ontap-san | block | a9b7bfff-0505-4e31-b6c5-59f492e02d33 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Expandir um volume NFS
O Trident suporta a expansão de volume para PVs NFS provisionados em ontap-nas , ontap-nas-economy , ontap-nas-flexgroup , gcp-cvs , e azure-netapp-files back-ends.
Etapa 1: Configure a classe de armazenamento para suportar a expansão de volume.
Para redimensionar um PV NFS, o administrador primeiro precisa configurar a classe de armazenamento para permitir a expansão do volume, definindo o seguinte: allowVolumeExpansion campo para true :
cat storageclass-ontapnas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ontapnas
provisioner: csi.trident.netapp.io
parameters:
backendType: ontap-nas
allowVolumeExpansion: true
Se você já criou uma classe de armazenamento sem essa opção, basta editar a classe de armazenamento existente usando kubectl edit storageclass para permitir a expansão do volume.
Passo 2: Crie um PVC com a StorageClass que você criou.
cat pvc-ontapnas.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: ontapnas20mb
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Mi
storageClassName: ontapnas
A Trident deve criar um PV NFS de 20 MiB para este PVC:
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ontapnas20mb Bound pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 20Mi RWO ontapnas 9s kubectl get pv pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 20Mi RWO Delete Bound default/ontapnas20mb ontapnas 2m42s
Etapa 3: Expandir o PV
Para redimensionar o PV recém-criado de 20 MiB para 1 GiB, edite o PVC e defina spec.resources.requests.storage para 1 GiB:
kubectl edit pvc ontapnas20mb
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: csi.trident.netapp.io
creationTimestamp: 2018-08-21T18:26:44Z
finalizers:
- kubernetes.io/pvc-protection
name: ontapnas20mb
namespace: default
resourceVersion: "1958015"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/ontapnas20mb
uid: c1bd7fa5-a56f-11e8-b8d7-fa163e59eaab
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
# ...
Etapa 4: Valide a expansão
Você pode verificar se o redimensionamento funcionou corretamente conferindo o tamanho do PVC, do PV e do volume Trident :
kubectl get pvc ontapnas20mb NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ontapnas20mb Bound pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 1Gi RWO ontapnas 4m44s kubectl get pv pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 1Gi RWO Delete Bound default/ontapnas20mb ontapnas 5m35s tridentctl get volume pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 -n trident +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | NAME | SIZE | STORAGE CLASS | PROTOCOL | BACKEND UUID | STATE | MANAGED | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+ | pvc-08f3d561-b199-11e9-8d9f-5254004dfdb7 | 1.0 GiB | ontapnas | file | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true | +------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+