kubernetes Volume:Mount fail (Bug)

Bug 1

问题描述

Pod无法成功创建,describe查看原因,是因为 mount failed

WarningFailedMount  MountVolume.SetUp failed for volume "kubernetes.io/nfs/86f87b17-9ab3-11e8-a7cb-000c2990bb8f-pv0001" (spec.Name: "pv0001") pod "86f87b17-9ab3-11e8-a7cb-000c2990bb8f" (UID: "86f87b17-9ab3-11e8-a7cb-000c2990bb8f") with: mount failed: exit status 32
Mounting command: mount
Mounting arguments: 192.168.157.128:/data/tmp /var/lib/kubelet/pods/86f87b17-9ab3-11e8-a7cb-000c2990bb8f/volumes/kubernetes.io~nfs/pv0001 nfs []
Output: mount: 文件系统类型错误、选项错误、192.168.157.128:/data/tmp 上有坏超级块、
       缺少代码页或助手程序,或其他错误
       (对某些文件系统(如 nfs、cifs) 您可能需要
       一款 /sbin/mount.<类型> 助手程序)
   有些情况下在 syslog 中可以找到一些有用信息- 请尝试
   dmesg | tail  这样的命令看看。

分析

原本 k8s PV 设置如下:

apiVersion: v1
kind: PersistentVolume
metadata:
    name: pv0001
spec:
    capacity:
        storage: 1Gi
    accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        path: "/data/tmp"
        server: 192.168.157.128
        readOnly: false

Google了一下,应该是nfs的问题,当指定与块设备不一致的文件系统类型则命令报错

mount: 文件系统类型错误、选项错误、/dev/sdb8 上有坏超级块、
   缺少代码页或助手程序,或其他错误

解决办法

配置nfs

直接参考博客:详解配置nfs挂载

配置好nfs后,先尝试本机挂载:

# mount -t nfs 192.168.1.5:/data /mnt #在本机测试挂载

本机挂载之后,再尝试k8s启动,启动成功

之后,会发现没有写权限:

# touch file2.md
touch: 无法创建"file2.md": 权限不够

这种情况下可以修改exports中的权限,更改为任意用户登陆都具有root权限 no_root_squash (虽然这样会不太安全)

[root@localhost mnt]# cat /etc/exports
/data/tmp 192.168.157.0/24(rw,sync,no_root_squash)

你可能感兴趣的:(Bug日志)