Longhorn 云原生容器分布式存储 - 故障排除指南

内容来源于官方 Longhorn 1.1.2 英文技术手册。

系列

目录

  1. Longhorn 卷文件系统损坏时,Pod 卡在 creating 状态
  2. 非标准 Kubelet 目录
  3. Longhorn 默认设置不保留
  4. 分离和附加卷后,Recurring job 不会创建新 job
  5. 使用 Traefik 2.x 作为 ingress controller
  6. 使用 cURL 创建 Support Bundle
  7. Longhorn RWX 共享挂载所有权在 consumer Pod 中显示为 nobody
  8. 由于节点上的多路径,MountVolume.SetUp for volume 失败
  9. Longhorn-UI:WebSocket 握手期间出错:意外响应代码:200 #2265
  10. Longhorn 卷需要很长时间才能完成安装
  11. volume readonly or I/O error
  12. volume pvc-xxx not scheduled

1. 当 Longhorn 卷文件系统损坏时,Pod 卡在 creating 状态

适用版本

所有 Longhorn 版本。

症状

Pod 停留在容器 Creating 中,日志中有错误。

Warning  FailedMount             30s (x7 over 63s)  kubelet                  MountVolume.SetUp failed for volume "pvc-bb8582d5-eaa4-479a-b4bf-328d1ef1785d" : rpc error: code = Internal desc = 'fsck' found errors on device /dev/longhorn/pvc-bb8582d5-eaa4-479a-b4bf-328d1ef1785d but could not correct them: fsck from util-linux 2.31.1
ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file while determining whether /dev/longhorn/pvc-bb8582d5-eaa4-479a-b4bf-328d1ef1785d is mounted.
/dev/longhorn/pvc-bb8582d5-eaa4-479a-b4bf-328d1ef1785d contains a file system with errors, check forced.
/dev/longhorn/pvc-bb8582d5-eaa4-479a-b4bf-328d1ef1785d: Inodes that were part of a corrupted orphan linked list found.  

/dev/longhorn/pvc-bb8582d5-eaa4-479a-b4bf-328d1ef1785d: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
  (i.e., without -a or -p options)

原因

Longhorn 卷的文件系统损坏时,Longhorn 无法重新挂载该卷。 因此,workload 无法重新启动。

Longhorn 无法自动修复此问题。发生这种情况时,您需要手动解决此问题。

解决方案

  1. 寻找迹象:
    • Longhorn UI 检查卷是否处于 error 状态。
    • 检查 Longhorn 管理器 pod 日志以了解系统损坏错误消息。

    如果卷未处于 error 状态,则 Longhorn 卷内的文件系统可能因外部原因而损坏。

  2. 缩减 workload
  3. UI 将卷附加到任何一个 node
  4. SSH 进入 node
  5. /dev/longhorn/ 下找到 Longhorn 卷对应的块设备。
  6. 运行 fsck 来修复文件系统。
  7. UI 分离卷。
  8. 扩大 workload

2. 非标准 Kubelet 目录

适用版本

所有 Longhorn 版本。

症状

Kubernetes 集群使用非标准的 Kubelet 目录时,longhorn-csi-plugin 无法启动。

ip-172-30-0-73:/home/ec2-user # kubectl -n longhorn-system get pod
NAME                                        READY   STATUS              RESTARTS   AGE
longhorn-ui-5b864949c4-4sgws                1/1     Running             0          7m35s
longhorn-manager-tx469                      1/1     Running             0          7m35s
longhorn-driver-deployer-5444f75b8f-kgq5v   1/1     Running             0          7m35s
longhorn-csi-plugin-s4fg7                   0/2     ContainerCreating   0          6m59s
instance-manager-r-d185a1e9                 1/1     Running             0          7m10s
instance-manager-e-b5e69e2d                 1/1     Running             0          7m10s
csi-attacher-7d975797bc-qpfrv               1/1     Running             0          7m
csi-snapshotter-7dbfc7ddc6-nqqtg            1/1     Running             0          6m59s
csi-attacher-7d975797bc-td6tw               1/1     Running             0          7m
csi-resizer-868d779475-v6jvv                1/1     Running             0          7m
csi-resizer-868d779475-2bbs2                1/1     Running             0          7m
csi-provisioner-5c6845945f-46qnb            1/1     Running             0          7m
csi-resizer-868d779475-n5vjn                1/1     Running             0          7m
csi-provisioner-5c6845945f-fjnrq            1/1     Running             0          7m
csi-snapshotter-7dbfc7ddc6-mhfpl            1/1     Running             0          6m59s
csi-provisioner-5c6845945f-4lx5c            1/1     Running             0          7m
csi-attacher-7d975797bc-flldq               1/1     Running             0          7m
csi-snapshotter-7dbfc7ddc6-cms2v            1/1     Running             0          6m59s
engine-image-ei-611d1496-dlqcs              1/1     Running             0          7m10s

原因

由于 Longhorn 无法检测到 Kubelet 的根目录设置在哪里。

解决方案

Longhorn 通过 longhorn.yaml 安装:

取消注释并编辑:

#- name: KUBELET_ROOT_DIR
#  value: /var/lib/rancher/k3s/agent/kubelet
Longhorn 通过 Rancher - App 安装:

点击 Customize Default Settings 设置 Kubelet 根目录

相关信息

3. Longhorn 默认设置不保留

适用版本

所有 Longhorn 版本。

症状

  • 通过 helmRancher App 升级 Longhorn 系统时,修改后的 Longhorn 默认设置不会保留。
  • 通过 kubectl -n longhorn-system edit configmap longhorn-default-setting 修改默认设置时,修改不会应用于 Longhorn 系统。

背景

此默认设置仅适用于尚未部署的 Longhorn 系统。 它对现有的 Longhorn 系统没有影响。

解决方案

我们建议使用 Longhorn UI 更改现有集群上的 Longhorn 设置。

您也可以使用 kubectl,但请注意这将绕过 Longhorn 后端验证。

kubectl edit settings <SETTING-NAME> -n longhorn-system

4. 分离和附加卷后,Recurring job 不会创建新 job

适用版本

所有 Longhorn 版本。

症状

当卷被分离很长时间后被附加时,循环作业不会创建新 job。

根据 Kubernetes CronJob 限制:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值