我有一個kubernetes集羣正在網絡外運行,並在同一網絡中的另一臺機器上安裝了NFS服務器。我能ssh到任何節點的集羣中,並從服務器安裝運行sudo mount -t nfs 10.17.10.190:/export/test /mnt
但每當我的測試莢嘗試使用一個NFS持久卷一個指向該服務器失敗此消息:Kubernetes窗格無法從外部nfs掛載
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
19s 19s 1 default-scheduler Normal Scheduled Successfully assigned nfs-web-58z83 to wal-vm-newt02
19s 3s 6 kubelet, wal-vm-newt02 Warning
FailedMount MountVolume.SetUp failed for volume "kubernetes.io/nfs/bad55e9c-7303-11e7-9c2f-005056b40350-test-nfs" (spec.Name: "test-nfs") pod "bad55e9c-7303-11e7-9c2f-005056b40350" (UID: "bad55e9c-7303-11e7-9c2f-005056b40350") with: mount failed: exit status 32
Mounting command: mount
Mounting arguments: 10.17.10.190:/exports/test /var/lib/kubelet/pods/bad55e9c-7303-11e7-9c2f-005056b40350/volumes/kubernetes.io~nfs/test-nfs nfs []
Output: mount.nfs: access denied by server while mounting 10.17.10.190:/exports/test
有誰知道我可以如何解決這個問題,並讓它可以從外部NFS服務器上掛載?
集羣的節點正在10.17.10.185 - 10.17.10.189
上運行,並且所有的集羣都以ips開頭並以10.0.x.x
開頭。羣集上的所有節點和NFS服務器都運行Ubuntu。 NFS服務器上10.17.10.190
運行這個/etc/exports
:
/export 10.17.10.185/255.0.0.0(rw,sync,no_subtree_check)
我建立一個持久的量和持續的音量要求,他們都創造成功顯示運行kubectl get pv,pvc
輸出:
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
pv/test-nfs 1Mi RWX Retain Bound staging/test-nfs 15m
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
pvc/test-nfs Bound test-nfs 1Mi RWX 15m
他們創建像這樣:
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-nfs
spec:
capacity:
storage: 1Mi
accessModes:
- ReadWriteMany
nfs:
# FIXME: use the right IP
server: 10.17.10.190
path: "/exports/test"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Mi
我的測試盒使用這種配置:
apiVersion: v1
kind: ReplicationController
metadata:
name: nfs-web
spec:
replicas: 1
selector:
role: web-frontend
template:
metadata:
labels:
role: web-frontend
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
volumeMounts:
# name must match the volume name below
- name: test-nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: test-nfs
persistentVolumeClaim:
claimName: test-nfs
修正了uid工作的值,我不確定爲什麼它不能與標準用戶一起工作,對於我的用戶的實際uid而言,一定是奇怪的。 –
@ColinMaxfield:你能否解釋一下如何修復pod和NFS共享的UID? – n3o
@ n3o我剛剛通過使用runAsUser設置了我選擇的特定用戶標識來進行Nicolas建議,然後我使用chown更改了NFS目錄的所有權以匹配相同的用戶標識。 –