如何在OpenEBS的现有storagePoolClaim中添加设备?

时间:2018-11-22 13:06:02

标签: kubernetes openebs

如何在现有的storagePoolClaim中添加设备?我以为我可以编辑spc并将磁盘添加到其中,但是我看不到磁盘应该按原样重新格式化。

1 个答案:

答案 0 :(得分:0)

Github问题2258 openEBS回购正在跟踪此问题。目前,可以通过修补少量资源来完成此操作。通过github解决方法粘贴内容,

用于使用其他磁盘扩展cStor池(类型=条带化)。

cStor池组件的简要说明 存储池CR(SP)-用于指定池使用的磁盘CR。 cStor存储池CR(CSP)-用于指定池使用的唯一磁盘路径。 cStor存储池部署和关联的Pod。 当使用一组磁盘创建SPC规范时,cstor-operator将基于节点分离磁盘。并且在每个节点上,将使用该节点上的磁盘创建一个cStor池。设置池后,只能通过在同一节点上已经发现的磁盘来对其进行扩展。

以下步骤用于扩展单个cStor存储池,并且需要在与SPC对应的每个cStor池上重复进行。

步骤1:确定与SPC关联的cStor池(CSP)和存储池(SP)。

stop

存储池示例输出:

kubectl get sp -l openebs.io/storage-pool-claim=cstor-disk --show-labels

从上面的列表中,选择需要扩展的cStor池。 CSP和SP的名称将相同。其余步骤假定需要扩展cstor-disk-vt1u。 从上面的输出中,还要记下运行池的节点。在这种情况下,该节点为gke-kmova-helm-default-pool-2c01cdf6-dxbf

步骤2:确定需要附加到cStor池的新磁盘。 以下命令可用于列出给定节点上的磁盘。

NAME              AGE       LABELS
cstor-disk-i4xj   53m       kubernetes.io/hostname=gke-kmova-helm-default-pool-2c01cdf6-9mxq,openebs.io/cas-type=cstor,openebs.io/cstor-pool=cstor-disk-i4xj,openebs.io/storage-pool-claim=cstor-disk
cstor-disk-vt1u   53m       kubernetes.io/hostname=gke-kmova-helm-default-pool-2c01cdf6-dxbf,openebs.io/cas-type=cstor,openebs.io/cstor-pool=cstor-disk-vt1u,openebs.io/storage-pool-claim=cstor-disk
cstor-disk-ys0r   53m       kubernetes.io/hostname=gke-kmova-helm-default-pool-2c01cdf6-nh6w,openebs.io/cas-type=cstor,openebs.io/cstor-pool=cstor-disk-ys0r,openebs.io/storage-pool-claim=cstor-disk

示例磁盘输出。

kubectl get disks -l kubernetes.io/hostname=gke-kmova-helm-default-pool-2c01cdf6-dxbf

以下命令可用于查看已在节点上使用的磁盘-gke-kmova-helm-default-pool-2c01cdf6-dxbf

NAME                                      AGE
disk-b407e5862d253e666636f2fe5a01355d     46m
disk-ffca7a8731976830057238c5dc25e94c     46m
sparse-ed5a5183d2dba23782d641df61a1d869   52m

样本输出:

kubectl get sp -l kubernetes.io/hostname=gke-kmova-helm-default-pool-2c01cdf6-dxbf -o jsonpath="{range .items[*]}{@.spec.disks.diskList};{end}" | tr ";" "\n"

在这种情况下,未使用disk-ffca7a8731976830057238c5dc25e94c。

步骤3:使用磁盘路径详细信息修补CSP 获取devLinks下唯一路径列出的磁盘路径。

[disk-b407e5862d253e666636f2fe5a01355d]
[sparse-ed5a5183d2dba23782d641df61a1d869]`

样本输出:

kubectl get disk disk-ffca7a8731976830057238c5dc25e94c -o jsonpath="{range .spec.devlinks[0]}{@.links[0]};{end}" | tr ";" "\n"

将上述磁盘路径修补到CSP中

/dev/disk/by-id/scsi-0Google_PersistentDisk_kmova-n2-d1

通过执行kubectl get csp cstor-disk-vt1u -o yaml验证磁盘是否已打补丁,并检查是否在diskList下添加了新磁盘。

步骤4:使用磁盘名称修补SP 以下命令使用磁盘(disk-ffca7a8731976830057238c5dc25e94c)修补SP(cstor-disk-vt1u)

kubectl patch csp cstor-disk-vt1u --type json -p '[{ "op": "add", "path": "/spec/disks/diskList/-", "value": "/dev/disk/by-id/scsi-0Google_PersistentDisk_kmova-n2-d1" }]'

通过执行kubectl get sp cstor-disk-vt1u -o yaml验证磁盘是否已打补丁,并检查是否在diskList下添加了新磁盘。

第5步:展开池。 最后一步是使用磁盘路径(/ dev / disk / by-id / scsi-0Google_PersistentDisk_kmova-n2-d1)更新cstor池容器(cstor-disk-vt1u)

标识与CSP cstor-disk-vt1u关联的cstor池容器。

kubectl patch sp cstor-disk-vt1u --type json -p '[{ "op": "add", "path": "/spec/disks/diskList/-", "value": "disk-ffca7a8731976830057238c5dc25e94c" }]'

样本输出:

kubectl get pods -n openebs | grep cstor-disk-vt1u

检查池名称:

cstor-disk-vt1u-65b659d574-8f6fp            2/2       Running   0          1h        10.44.1.8    gke-kmova-helm-default-pool-2c01cdf6-dxbf

样本输出:

kubectl exec -it -n openebs cstor-disk-vt1u-65b659d574-8f6fp -- zpool list

从以上输出中提取池名称。在这种情况下-cstor-deaf87e6-ec78-11e8-893b-42010a80003a

用其他磁盘扩展池。

NAME                                         SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
cstor-deaf87e6-ec78-11e8-893b-42010a80003a   496G   202K   496G         -     0%     0%  1.00x  ONLINE  -

您可以再次执行list命令以查看容量的增加。

kubectl exec -it -n openebs cstor-disk-vt1u-65b659d574-8f6fp -- zpool add cstor-deaf87e6-ec78-11e8-893b-42010a80003a /dev/disk/by-id/scsi-0Google_PersistentDisk_kmova-n2-d1

样本输出:

kubectl exec -it -n openebs cstor-disk-vt1u-65b659d574-8f6fp -- zpool list