- 问题描述:
由于安全的原因 , 启动pod的镜像默认是非root用户 , 比如user:group 。而NAS盘挂载的时候 , 里面的文件权限是root:root, 见下图 。这就带来了一个问题 , 当pod启动时 , 容器的用户是user , 用user启动/start.sh时 , 操作挂载目录会报 permission denied 错误 。

文章插图
- 方案选择
有三种方案:
- 启动pod的容器默认用户改成root:root
- nas盘的目录权限先改成user:group, 这样可以和pod容器内的用户保持一致
- 启动pod时 , 将nas盘挂载到容器内的目录权限修改成user:group
第二种方案 , 是先把nas盘挂载到一台主机上 , 然后去修改对应的目录权限为user:group , 这就要求需要在这台主机上新建user:group用户 。而且如果遇到了pod容器的默认用户是user1:group1 , user2:group2的时候 , 就要在nas挂载的主机上同步操作 , 很不优雅 。
第三种方案 , 可以一劳永逸 , 通过模板化操作 , 可以实现任意pod默认用户使用nas挂载到容器的目录 。
要实现第三种方案 , 可以利用
spec.template.spec.initContainers 在启动pod的时候 , 用一个初始化容器 , 对挂载到pod里的目录初始化目录权限为:user:group 。
- 具体实施
- 容器的默认用户是user:group, uid=10000, gid=10000
- 默认挂载到容器内部的路径:/home/user
- 初始化容器选择centos(或者ubuntu , 默认用户是root即可)
...spec:template:spec:containers:- image: your_imageimagePullPolicy: Alwaysname: your_container_nameports:- containerPort: 6006protocol: TCPresources:limits:cpu: 500mmemory: 1Ginvidia.com/gpu: "1"terminationMessagePath: /dev/termination-logterminationMessagePolicy: File- mountPath: /home/username: aide-139741-89991d7d0initContainers:- args:- -c- chmod 755 /home/user && chown 10000:10000 /home/usercommand:- /bin/shimage: centosimagePullPolicy: IfNotPresentname: initpathauthresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilevolumeMounts:- mountPath: /home/username: aide-139741-89991d7d0...经过这样的配置 , 启动的容器就可以访问挂载的目录了 。- NAS服务器是否有必要购买呢 家用NAS的实用性有多少
- 亏损83亿 94亿亏损之后
- 水培花卉的养殖方法 水培花卉怎么种植
- 途牛一季度亏损2.87亿元
- 兰花怎样水培 兰花最简单的水培方法
- 微博二季度营收1.47亿美元
- 螃蟹容易养活吗 螃蟹能养活吗
- 阿里巴巴nasa计划指什么字母 阿里启动NASA计划
- 为什么小鸡养不活 养小鸡怎么养才不会死
- 家庭养龙虾怎么养 家养小龙虾怎么养
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
