Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator
/ /

调整一个数据库资源的存储大小

在此页面上

  • 先决条件
  • 步骤

确保 StorageClass 和卷插件提供商, 持久卷 使用支持调整大小:

kubectl patch storageclass/<my-storageclass> --type='json' \
-p='[{"op": "add", "path": "/allowVolumeExpansion", "value": true }]'

如果您没有支持调整大小的 StorageClass,请向 Kubernetes 管理员寻求帮助。

1

使用现有数据库资源或创建具有持久存储的新数据库资源。 等待持久卷进入 Running状态。

例子

具有持久存储的数据库资源包括:

1apiVersion: mongodb.com/v1
2kind: MongoDB
3metadata:
4 name: <my-replica-set>
5spec:
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"
2
  1. 在 Kubernetes 集群中启动mongo

    $kubectl exec -it <my-replica-set>-0 \
    /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.0/bin/mongo
  2. 将数据插入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

为整个副本集调用以下命令:

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"}}}}'

等到每个 持久卷声明 达到以下条件:

- 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

注意

此步骤会删除 StatefulSet 唯一。Pod 保持不变并正在运行。

删除 StatefulSet 资源。

kubectl delete sts --cascade=false <my-replica-set>
5
  1. 更新磁盘大小。 打开您首选的文本编辑器并进行与此示例类似的更改:

    例子

    要将副本集的磁盘大小更新为 2 GB,请更改数据库资源规范中的storage值:

    1apiVersion: mongodb.com/v1
    2kind: MongoDB
    3metadata:
    4 name: <my-replica-set>
    5spec:
    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"
  2. 重新创建 StatefulSet 具有新卷大小的资源。

    kubectl apply -f my-replica-set-vol.yaml
  3. 等待此 StatefulSet 达到Running状态。

6

调用以下命令:

kubectl rollout restart sts <my-replica-set>

新 Pod 会挂载调整大小后的卷。

7

如果 持久卷 被重复使用,您在 步骤2 中插入的数据可以在存储在 持久卷 中的数据库中找到 :

$ 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

后退

扩展部署

在此页面上