在k8s环境下安装mysql,磁盘挂载到nfs配置,结果kubectl logs -f 到pod后,看到changing ownership of '/var/lib/mysql/': Operation notpermitted错误,百度了良久,终于有了答案
在搜索这个问题时,在Stack Overflow中找到如下内容:
image提示说确实是与NFS的配置有关,NFS默认是squash_all模式,但是要想使用NFS目录,将目录映射到docker容器中,必须要配置成no_root_squash模式才行,否则root用户无权限使用nfs的volume来映射docker容器中的目录!!!
no_root_squash模式:是登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
这正是我遇到的问题,之前一直在排查k8s master节点的问题,查找资料有说是
kube-controller-manager的问题,但是排查一圈,没有发现问题。原来是NFS的问题啊,于是果断在NFS配置文件中增加了no_root_squash:
[root@dev252 etc]# more exports
/home/centos7/ 192.168.1.0/24(insecure,rw,sync,fsid=0)
/home/centos7/nfs192.168.1.0/24(insecure,rw,sync,no_root_squash,fsid=0)
这样,再重启nfs后,再次通过k8s启动mysql service,就一切都正常了,可以正常创建pod,也可在240上正常创建容器了!
网友评论