NFS/hostPath 在 kubernetes 中挂载为非 root
Posted
技术标签:
【中文标题】NFS/hostPath 在 kubernetes 中挂载为非 root【英文标题】:NFS/hostPath mount as non-root in kubernetes 【发布时间】:2021-07-02 14:05:29 【问题描述】:如何以 Alejandra(1001) 用户身份挂载 NFS?
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: external-ns
name: app1
labels:
app: app1
annotations:
pv.beta.kubernetes.io/gid: "1001"
spec:
replicas: 1
selector:
matchLabels:
app: app1
template:
metadata:
labels:
app: app1
spec:
securityContext:
runAsUser: 1001
runAsGroup: 1001
fsGroup: 1001
nodeSelector:
node-role.kubernetes.io/worker: worker
containers:
- image: 192.168.1.1:5000/app1
imagePullPolicy: Always
name: app1
volumeMounts:
- mountPath: /app/var
name: networkshared-fs-0
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: networkshared-fs-0
spec:
capacity:
storage: 80Gi
accessModes:
- ReadWriteMany
mountOptions:
- vers=4.0
nfs:
path: /var/lib/alejandra
server: 192.168.1.2
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: alejandra-dashboard
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
当我执行 ls 时,我得到了这个:
kubectl exec -ti app1-XXX -- ls -al /var
total 12
drwxr-xr-x. 2 root root 4096 Jul 1 12:48 .
drwxr-xr-x. 1 alejandra alejandra 4096 Jul 2 11:20 ..
NFS 服务器确实有这个 /etc/exports:
/var/lib/alejandra 10.0.0.13/32(rw,no_root_squash,no_subtree_check) /var/lib/alejandra 10.0.0.13/32(rw,no_root_squash,no_subtree_check)
谢谢
更新:hostPath 也是如此。
【问题讨论】:
嗨,你有没有看到类似的问题:serverfault.com/questions/1025819? nfs 卷允许将现有的 NFS(网络文件系统)共享挂载到 Pod 中。您是否尝试将Deployment
更改为Pod
?您还可以找到有关卷权限的文档here
我无法切换到 pod,因为我使用了部署。无论如何,hostPath 存储也是如此。
你需要挂载hostPath
或nfs
而不是部署到你的pod中。 hostPath 卷将文件或目录从主机节点的文件系统安装到您的 Pod 中。 nfs
卷允许将现有的 NFS(网络文件系统)共享挂载到 Pod 中。你可以阅读更多here
【参考方案1】:
你需要使用provisioner,看看,仅仅设置NFS是不够的,你需要添加角色和角色绑定,SA等
https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner
【讨论】:
以上是关于NFS/hostPath 在 kubernetes 中挂载为非 root的主要内容,如果未能解决你的问题,请参考以下文章