路漫漫其修远兮
吾将上下而求索

k8s学习:容器挂载node目录权限问题

问题:当pod启动挂载node的目录的时候,如果node父目录不存在,会递归创建,但是父目录属主属组为root,具体看下面链接
https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
pod启动的时候会切换到andblog用户,在挂载目录里面创建子目录,andblog用户没有权限,下面刚刚node目录属主属组为解决此问题


下面是具体需要执行的命令,来监听/data/script; cd /data/script;目录,当有此目录递归创建的时候,会自动将目录的属主属组更改为docker用户

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p; \
yum install -y inotify-tools; \
mkdir -p /data/script; cd /data/script; \
wget http://yum.andblog.com/script/watch_file.sh; \
echo "nohup /bin/bash /data/script/watch_file.sh &" >> /etc/rc.local; \
nohup /bin/bash /data/script/watch_file.sh &



具体脚本内容如下
cat watch_file.sh
#!/bin/bash
cd $(dirname $0)

func_watch_file(){

/usr/bin/inotifywait -mrq \
    --timefmt '%Y/%m/%d-%H:%M:%S' \
    --format '%T %w %f' \
    -e create /data/graylog /data/k8s-applogs \
    | while read file; do 
        echo $file
        a=$(echo $file | awk '{print $2}')
        b=$(echo $file | awk '{print $3}')
        echo $a$b
        chown -R docker.docker $a$b
    done
}

func_watch_file &>> watch_file.log

未经允许不得转载:江哥架构师笔记 » k8s学习:容器挂载node目录权限问题

分享到:更多 ()

评论 抢沙发

评论前必须登录!