增加 GlusterFS 集群的存储容量

增加 GlusterFS 集群的存储容量。

您可以通过在现有存储节点上添加设备或向 GlusterFS 集群中添加存储节点来增加 GlusterFS 集群的存储容量。

在开始之前,先设置 kubectl CLI。 请参阅从 kubectl CLI 访问集群

注:每次在 kubectl 命令中使用 -- heketi-cli 时,都必须提供 --useradmin--secret <admin_password> 参数以用于 Heketi pod 认证。<admin_password> 是在 GlusterFS 安装期间用于创建 Heketi 认证密钥的密码。

在 GlusterFS 存储节点上添加设备

您可以在 GlusterFS 集群中存在的存储节点上添加设备。 设备必须符合 GlusterFS 设备需求。 请参阅硬件需求

添加设备之后,要使其成为 Heketi 拓扑的一部分,首先检索所需信息,然后运行更新拓扑的命令。

检索所需信息

需要在其上添加设备的节点的标识。 要获取节点标识,请运行以下命令:

  1. 获取 Heketi pod 名称。

    kubectl -n kube-system get pod -l glusterfs=heketi-pod
    

    以下是样本输出:

    NAME                      READY     STATUS    RESTARTS   AGE
    heketi-7b69bb4d48-g4kx9   1/1       Running   0          1h
    
  2. 获取集群标识。

    kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> cluster list
    

    以下是样本命令和输出:

    kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin cluster list
    
    Clusters:
    Id:2a47436e012604919dae5fbb4fc3899c [file][block]
    #
    
  3. 获取节点标识:

    kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> cluster info <cluster ID>
    

    此命令会返回节点的列表。

    以下是样本命令和输出:

    kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin cluster info 2a47436e012604919dae5fbb4fc3899c
    
    Cluster id: 2a47436e012604919dae5fbb4fc3899c
    Nodes:
    6c4c66317f5650e7b61057fede8dbe25
    8164c019b2e7c67b224709a97d05d0e9
    de3d0a9a21868a09f92fb50e166cceda
    Volumes:
    896044a59b18316790ff5554455a7a9e
    b971b2bb34703143e094f9b5241e4ddf
    f3f93e7eddd48e95779361ff35bd2222
    Block: true
    
    File: true
    
  4. 标识具有新设备的节点。 可以使用节点 IP 地址来进行标识。 要检索节点 IP 地址,请对所有节点运行以下命令。 将具有新设备的存储节点的节点标识记录下来。

    kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> node info <node ID>
    

    注:获取新设备的符号链接。 有关获取符号链接的更多信息,请参阅符号链接

    以下是样本命令和输出:

    kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin node info de3d0a9a21868a09f92fb50e166cceda
    
    Node Id: de3d0a9a21868a09f92fb50e166cceda
    State: online
    Cluster Id: 2a47436e012604919dae5fbb4fc3899c
    Zone: 1
    Management Hostname: 192.168.0.96
    Storage Hostname: 192.168.0.96
    Devices:
    Id:4c6ba3295f71a78515d6bd5d5aad58ae   Name:/dev/disk/by-path/pci-0000_00_10_0    State:online    Size (GiB):24      Used     (GiB):2       Free (GiB):22
    #
    

更新拓扑

使用有关新设备的信息更新 Heketi 拓扑。 运行以下命令:

kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> device add --name=<device symlink> --node=<Node ID>

以下是样本命令和输出:

kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin device add --name=/dev/disk/by-path/pci-0000_00_11_0 --node=de3d0a9a21868a09f92fb50e166cceda
Device added successfully
#

向 GlusterFS 集群中添加存储节点

您可以向 GlusterFS 集群中添加存储节点。 新的存储节点上的设备必须满足 GlusterFS 设备需求。 请参阅硬件需求

在继续之前,先完成下列步骤:

使用 kubectl CLI 完成以下步骤:

  1. 获取 GlusterFS pod 名称。

    kubectl -n kube-system get pod -owide -l glusterfs=pod
    

    以下是样本命令和输出:

    kubectl -n kube-system get pod -owide -l glusterfs=pod
    
    NAME              READY     STATUS              RESTARTS   AGE       IP              NODE
    glusterfs-4srll   1/1       Running             1          3h        192.168.0.96    192.168.0.96
    glusterfs-5zp55   0/1       ContainerCreating   0          7s        192.168.0.139   192.168.0.139
    glusterfs-j2t6d   1/1       Running             0          3h        192.168.0.56    192.168.0.56
    glusterfs-q8mcm   1/1       Running             0          3h        192.168.0.184   192.168.0.184
    #
    
  2. 从任意现有的 GlusterFS pod 运行同级探测命令。

    kubectl -n kube-system exec <GlusterFS pod name> -- gluster peer probe <IP address or host name of the new node>
    

    以下是样本命令和输出:

    kubectl -n kube-system exec glusterfs-4srll -- gluster peer probe 192.168.0.139
    peer probe: success.
    #
    
  3. 获取 Heketi pod 名称。

    kubectl -n kube-system get pod -l glusterfs=heketi-pod
    

    以下是样本输出:

    NAME                      READY     STATUS    RESTARTS   AGE
    heketi-7b69bb4d48-g4kx9   1/1       Running   0          1h
    
  4. 获取集群标识。

    kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> cluster list
    

    以下是样本命令和输出:

    kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin cluster list
    
    Clusters:
    Id:2a47436e012604919dae5fbb4fc3899c [file][block]
    #
    
  5. 向 GlusterFS 集群中添加新节点。

    kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> node add --zone=1 --cluster=<cluster ID> --management-host-name=<IP address or host name of the new node> --storage-host-name=<IP address of the new node>
    

    以下是样本命令和输出:

    kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin node add --zone=1 --cluster=2a47436e012604919dae5fbb4fc3899c --management-host-name=192.168.0.139 --storage-host-name=192.168.0.139
    
    Node information:
    Id: 5df753379b9629eda0c5eb71687ee2ea
    State: online
    Cluster Id: 2a47436e012604919dae5fbb4fc3899c
    Zone: 1
    Management Hostname 192.168.0.139
    Storage Hostname 192.168.0.139
    #
    
  6. 使用新节点的设备信息更新拓扑。

    kubectl -n kube-system exec <Heketi pod name> -- heketi-cli --user admin --secret <admin_password> device add --name=<device symlink> --node=<Node ID>
    

    注:添加设备的 symlink 作为名称。 有关获取符号链接的更多信息,请参阅符号链接

    以下是样本命令和输出:

    kubectl -n kube-system exec heketi-7b69bb4d48-g4kx9 -- heketi-cli --user admin --secret admin device add --name=/dev/disk/by-path/pci-0000_00_10_0 --node=5df753379b9629eda0c5eb71687ee2ea
    Device added successfully
    #