导语:k8s 启动报错 ,通过describe pod,发现提示

Warning Failed 22s kubelet Error: Error response from daemon: error creating overlay mount to /data1/docker/lib/docker/overlay2/a119f7a409ef07f20a9b7cc912ccacbd3dfeb1bd2399f0eb7fe45f96b7c08179-init/merged: no such file or directory

只是部分容器有问题,mysql容器也需要挂载磁盘的是启动ok的,业务容器后启动就报错

网上搜了几个方法

1.在 daemon.json 中添加 “storage-driver”:“overlay”

这个不考虑,overlay都已经被overlay2替代了,官方说推荐用overlay2 代替 overlaydevicemapper(18.09 版本中废除)以获得更高的效率和磁盘 inode 的节省。再用旧的不合适

2.在 daemon.json 中添加 “storage-driver”:“devicemapper”

不考虑

3.禁用 selinux

我没有安装selinux

尬住。

自己改了下/etc/docker/daemon.json,参考

加了个"storage-driver": “overlay2”,

        {
            "default-runtime": "nvidia",
            "runtimes": {
                "nvidia": {
                    "path": "/usr/bin/nvidia-container-runtime",
                    "runtimeArgs": []
                }
            },
                "default-shm-size": "2G",
        "insecure-registries": ["harbor.deepwise.com","10.10.3.5","172.28.3.5"] ,
        "storage-driver": "overlay2",
        "graph": "/data1/docker/lib/docker"
        }

修改了docker服务 加了Environment=DOCKER_SELINUX=–selinux-enabled=false,也不知道是否有用。哈哈哈

[Service]
Environment=DOCKER_SELINUX=--selinux-enabled=false

我打算删除docker的graph路径或者叫data-root路径,即/data1/docker:

rm -rf /data1/docker
mkdir -p /data1/docker
# 因为上面改了配置 需要reload
systemctl daemon-reload
# 我这里想看一下debug日志
dockerd --debug
#systemctl restart docker

然后运行原来的helm命令启动服务 就好了。尬住。只能说解决了问题,但是没有找到原因。记不清出问题前之前干了什么骚操作了。

记录一下比较有借鉴意义的排查过程

docker info

检查下你的 docker 信息是不是与下面的保持一致。我当时检查的时候是extfs 磁盘是ext4

 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true

补充一下ext4 也是可以的。

# 查看磁盘位置  
blkid
# 格式化磁盘,更改文件系统为xfs
mkfs.xfs /dev/sdc1

后面再出问题就通过debug看报错。

参考

https://docs.docker.com/storage/storagedriver/overlayfs-driver/

https://zhuanlan.zhihu.com/p/107643520

https://developer.aliyun.com/ask/114099

Logo

开源、云原生的融合云平台

更多推荐