Requisitos previos
La clase de almacenamiento debe ser compatible con el cambio de tamaño
Asegúrese de que la clase de almacenamientoy el proveedor de complementos de volumen que utilizan los volúmenes persistentes admite el cambio de tamaño:
kubectl patch storageclass/<my-storageclass> --type='json' \ -p='[{"op": "add", "path": "/allowVolumeExpansion", "value": true }]'
Si no tiene una StorageClass que admita el cambio de tamaño, pídale ayuda a su administrador de Kubernetes.
Procedimiento
Cree o identifique un recurso personalizado persistente.
Utilice un recurso de base de datos existente o cree uno nuevo con almacenamiento persistente. Espere hasta que el volumen persistente llegue a... Running
estado.
Ejemplo
Un recurso de base de datos con almacenamiento persistente incluiría:
1 apiVersion: mongodb.com/v1 2 kind: MongoDB 3 metadata: 4 name: <my-replica-set> 5 spec: 6 members: 3 7 version: "4.4.0" 8 project: my-project 9 credentials: my-credentials 10 type: ReplicaSet 11 podSpec: 12 persistence: 13 single: 14 storage: "1Gi"
Insertar datos en la base de datos a la que sirve el recurso.
Inicie en el clúster de
mongoKubernetes.kubectl exec -it <my-replica-set>-0 \ /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo Insertar datos en la base de datos
test.<my-replica-set>:PRIMARY> use test switched to db test <my-replica-set>:PRIMARY> db.tmp.insertOne({"foo":"bar"}) { "acknowledged" : true, "insertedId" : ObjectId("61128cb4a783c3c57ae5142d") }
Parchear cada volumen de persistencia.
Invoque los siguientes comandos para todo el conjunto de réplicas:
kubectl patch pvc/"data-<my-replica-set>-0" -p='{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' kubectl patch pvc/"data-<my-replica-set>-1" -p='{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' kubectl patch pvc/"data-<my-replica-set>-2" -p='{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
Espere hasta que cada reclamación de volumen persistente llegue a la siguiente condición:
- lastProbeTime: null lastTransitionTime: "2019-08-01T12:11:39Z" message: Waiting for user to (re-)start a pod to finish file system resize of volume on node. status: "True" type: FileSystemResizePending
Eliminar los StatefulSets.
Nota
Este paso elimina únicamente el StatefulSet. Los pods permanecen sin cambios y en ejecución.
Borra un recurso StatefulSet.
kubectl delete sts --cascade=false <my-replica-set>
Actualice el recurso de base de datos con un nuevo valor de almacenamiento.
Actualice el tamaño del disco. Abra su editor de texto preferido y realice cambios similares a este ejemplo:
Ejemplo
Para actualizar el tamaño del disco del conjunto de réplicas a 2 GB, cambie el valor
storageen la especificación del recurso de la base de datos:1 apiVersion: mongodb.com/v1 2 kind: MongoDB 3 metadata: 4 name: <my-replica-set> 5 spec: 6 members: 3 7 version: "4.4.0" 8 project: my-project 9 credentials: my-credentials 10 type: ReplicaSet 11 podSpec: 12 persistence: 13 single: 14 storage: "2Gi" Recrea un recurso StatefulSet con el nuevo tamaño de volumen.
kubectl apply -f my-replica-set-vol.yaml Espere hasta que este StatefulSet alcance el estado
Running.
Validar que existan datos en la reclamación de volumen persistente actualizada.
Si se reutilizaron los volúmenes persistentes, los datos que insertó en el paso 2 se pueden encontrar en las bases de datos almacenadas en volúmenes persistentes:
kubectl exec -it <my-replica-set>-1 \ /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo
<my-replica-set>:PRIMARY> use test switched to db test <my-replica-set>:PRIMARY> db.tmp.count() 1