Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Aumentar o armazenamento para volumes persistentes

The Ops Manager, MongoDB Database, AppDB and Backup Daemon custom resources that comprise a standard Kubernetes Operator deployment are each deployed as Kubernetes statefulSets. The Kubernetes Operator supports increasing the storage associated with these specific resources by increasing the capacity of their respective Kubernetes persistentVolumeClaims when the underlying Kubernetes storageClass supports Kubernetes persistentVolume expansion.

Dependendo do tipo de recurso específico, você pode aumentar o armazenamento de duas maneiras. Você pode aumentar manualmente o armazenamento ou pode aproveitar o recurso de expansão de armazenamento fácil do Kubernetes Operator. A tabela a seguir ilustra qual desses dois procedimentos é suportado para um determinado tipo de recurso personalizado.

Tipo de recurso personalizado
Expansão manual de armazenamento
fácil expansão de armazenamento

AppDB

Backup Daemon

Banco de dados MongoDB

Multi-Cluster do MongoDB

Ops Manager

Verifique se o provedor de plugin-in de volume e StorageClass que os Volumes persistentes usam suporta 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 administrador do Kubernetes.

Observação

O mecanismo de expansão fácil requer o RBAC padrão incluído com o Kubernetes Operator. Especificamente, requer get, list, watch, patch e update permissões para persistantVolumeClaims. Se você tiver personalizado algum dos recursos RBAC do Kubernetes Operator, talvez seja necessário ajustar as permissões para permitir que o Kubernetes Operator redimensione os recursos de armazenamento em seu cluster do Kubernetes.

Esse processo resulta em uma reinicialização contínua do recurso personalizado do MongoDB em seu cluster Kubernetes.

1

Use um recurso de banco de dados de dados existente ou crie um novo com armazenamento persistente. Aguarde até que o volume persistente entre no estado Running .

Exemplo

Um recurso de reconhecimento de data center com armazenamento persistente incluiria:

1apiVersion: mongodb.com/v1
2kind: MongoDB
3metadata:
4 name: <my-replica-set>
5spec:
6 members: 3
7 version: "8.0.0"
8 project: my-project
9 credentials: my-credentials
10 type: ReplicaSet
11 podSpec:
12 persistence:
13 single:
14 storage: "1Gi"
2
  1. Start mongo in the Kubernetes cluster.

    $kubectl exec -it <my-replica-set>-0 \
    /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-8.0.0/bin/mongo
  2. 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")
    }
3

Importante

Você só pode aumentar o tamanho do disco para os recursos de armazenamento existentes, não diminuir. Diminuir o tamanho do armazenamento causa um erro no estágio de reconciliação.

  1. 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 storage na especificação do recurso do banco de dados de dados:

    1apiVersion: mongodb.com/v1
    2kind: MongoDB
    3metadata:
    4 name: <my-replica-set>
    5spec:
    6 members: 3
    7 version: "8.0.0"
    8 project: my-project
    9 credentials: my-credentials
    10 type: ReplicaSet
    11 podSpec:
    12 persistence:
    13 single:
    14 storage: "2Gi"
  2. Atualize o recurso personalizado MongoDB com o novo tamanho do volume.

    kubectl apply -f my-updated-replica-set-vol.yaml
  3. Aguarde até que este StatefulSet atinja o estado Running .

4

Se você reutilizar Volumes persistentes, poderá encontrar os dados inseridos na etapa 2 nos bancos de dados armazenados em Volumes persistentes:

$ kubectl describe mongodb/<my-replica-set> -n mongodb

A saída a seguir indica que sua solicitação de redimensionamento de PVC está sendo processada.

status:
clusterStatusList: {}
lastTransition: "2024-08-21T11:03:52+02:00"
message: StatefulSet not ready
observedGeneration: 2
phase: Pending
pvc:
- phase: PVC Resize - STS has been orphaned
statefulsetName: multi-replica-set-pvc-resize-0
resourcesNotReady:
- kind: StatefulSet
message: 'Not all the Pods are ready (wanted: 2, updated: 1, ready: 1, current:2)'
name: multi-replica-set-pvc-resize-0
version: ""
5

If you reuse Persistent Volumes, you can find the data that you inserted in Step 2 on the databases stored in Persistent Volumes:

$ kubectl exec -it <my-replica-set>-1 \
/var/lib/mongodb-mms-automation/mongodb-linux-x86_64-8.0.0/bin/mongo
<my-replica-set>:PRIMARY> use test
switched to db test
<my-replica-set>:PRIMARY> db.tmp.count()
1
1

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:

1apiVersion: mongodb.com/v1
2kind: MongoDB
3metadata:
4 name: <my-replica-set>
5spec:
6 members: 3
7 version: "8.0.0"
8 project: my-project
9 credentials: my-credentials
10 type: ReplicaSet
11 podSpec:
12 persistence:
13 single:
14 storage: "1Gi"
2
  1. Start mongo in the Kubernetes cluster.

    $kubectl exec -it <my-replica-set>-0 \
    /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-8.0.0/bin/mongo
  2. 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")
    }
3

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 reivindicação de volume persistente chega à 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
4

Atualize a definição de implantação do Kubernetes Operator e aplique a alteração em seu cluster do Kubernetes para reduzir o Kubernetes Operator para réplicas 0 . O dimensionamento do Operador Kubernetes para réplicas 0 permite evitar uma condição de corrida na qual o Operador Kubernetes tenta restaurar o estado do recurso atualizado manualmente para se alinhar com a definição original do recurso.

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-kubernetes-operator
namespace: mongodb
spec:
replicas: 0
5

Observação

Esta etapa remove o StatefulSet apenas. Os pods permanecem inalterados e em execução.

Excluir um StatefulSet recurso.

kubectl delete sts --cascade=false <my-replica-set>
6
  1. 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 storage na especificação do recurso do banco de dados de dados:

    1apiVersion: mongodb.com/v1
    2kind: MongoDB
    3metadata:
    4 name: <my-replica-set>
    5spec:
    6 members: 3
    7 version: "8.0.0"
    8 project: my-project
    9 credentials: my-credentials
    10 type: ReplicaSet
    11 podSpec:
    12 persistence:
    13 single:
    14 storage: "2Gi"
  2. Recrie um recurso StatefulSet com o novo tamanho do volume.

    kubectl apply -f my-replica-set-vol.yaml
  3. Aguarde até que o recurso personalizado MongoDB esteja em um estado Running .

7

Invocar o seguinte comando:

kubectl rollout restart sts <my-replica-set>

Os novos pods montam o volume redimensionado.

8

Se os Volumes persistentes foram reutilizados, os dados inseridos na etapa 2 podem 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-8.0.0/bin/mongo
<my-replica-set>:PRIMARY> use test
switched to db test
<my-replica-set>:PRIMARY> db.tmp.count()
1