当我在kubernetes v1.18 jenkins的主pod中使用此命令挂载nfs文件系统时:
root@jenkins-67fff76bb6-q77xf:/# mount -t nfs -o v4 192.168.31.2:/infrastructure/jenkins-share-workspaces /opt/jenkins
mount: permission denied
root@jenkins-67fff76bb6-q77xf:/#
为什么在我使用root用户时会显示权限被拒绝?当我在另一台机器上(不是在docker中)使用这个命令时,它工作得很好,显示服务器端工作得很好。这是yaml中的kubernetes jenkins master pod安全文本配置:
securityContext:
runAsUser: 0
fsGroup: 0
今天我尝试了另一个kubernetes pod并挂载nfs文件系统,抛出了同样的错误。从主机挂载NFS似乎工作得很好,而从kubernetes pod挂载有一个系统问题。为什么会发生这种情况?NFS在这个kubernetes pod中通过PVC绑定PV工作得很好,为什么它从docker挂载失败?我很困惑。
发布于 2020-08-17 18:18:15
有两种方法可以将nfs卷挂载到pod
第一个(直接在pod规范中):
kind: Pod
apiVersion: v1
metadata:
name: pod-using-nfs
spec:
volumes:
- name: nfs-volume
nfs:
server: 192.168.31.2
path: /infrastructure/jenkins-share-workspaces
containers:
- name: app
image: example
volumeMounts:
- name: nfs-volume
mountPath: /var/nfs
第二(创建持久化nfs卷和卷声明):
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 1Mi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.31.2
path: "/infrastructure/jenkins-share-workspaces"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 1Mi
volumeName: nfs
---
kind: Pod
apiVersion: v1
metadata:
name: pod-using-nfs
spec:
containers:
- name: app
image: example
volumeMounts:
- name: nfs
mountPath: /opt/jenkins
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs
编辑:
以上方案是首选方案,但如果您确实需要在容器中使用mount,则需要向pod添加功能:
spec:
containers:
- securityContext:
capabilities:
add: ["SYS_ADMIN"]
发布于 2020-08-17 00:10:37
尝试使用
securityContext:
privileged: true
如果您正在为jenkins使用dind,则需要这样做
https://stackoverflow.com/questions/63439071
复制相似问题