Pré-requisitos
A classe de armazenamento deve suportar o redimensionamento
Certifique-se de que a StorageClass e o fornecedor de plugin-in de volume que os Volumes persistentes usam suportam o redimensionamento:
kubectl patch storageclass/<my-storageclass> --type='json' \ -p='[{"op": "add", "path": "/allowVolumeExpansion", "value": true }]'
Se você não tiver um StorageClass que suporte o redimensionamento, peça ajuda ao seu administrador do Kubernetes.
Procedimento
Crie ou identifique um recurso personalizado persistente.
Use um recurso de reconhecimento de data center existente ou crie um novo com armazenamento persistente. Aguarde até que o volume persistente chegue ao estado Running
.
Exemplo
Um recurso de reconhecimento de data center com armazenamento persistente incluiria:
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"
Insira dados no reconhecimento de data center ao qual o recurso atende.
Inicie o
mongo
no cluster Kubernetes.kubectl exec -it <my-replica-set>-0 \ /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo Inserir dados no reconhecimento de data center
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") }
Corrija cada volume de persistência.
Invoque os seguintes comandos para todo o 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"}}}}'
Aguarde até que cada declaração de volume persistente chegue à seguinte condição:
- 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
Remova os StatefulSets.
Observação
Esta etapa remove apenas o StatefulSet. Os pods permanecem inalterados e em execução.
Exclua um recurso StatefulSet.
kubectl delete sts --cascade=false <my-replica-set>
Atualize o recurso do reconhecimento de data center com um novo valor de armazenamento.
Atualize o tamanho do disco. Abra seu editor de texto preferido e faça alterações semelhantes a este exemplo:
Exemplo
Para atualizar o tamanho do disco do conjunto de réplicas para 2 GB, altere o valor do
storage
na especificação do recurso do reconhecimento de data center: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" Recrie um recurso StatefulSet com o novo tamanho do volume.
kubectl apply -f my-replica-set-vol.yaml Aguarde até que este StatefulSet atinja o estado
Running
.
Valide que os dados existem na declaração de volume persistente atualizada.
Se os Volumes persistentes foram reutilizados, os dados inseridos na etapa 2 poderão ser encontrados nos bancos de dados armazenados em Volumes 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