NFS卷在kubernetes中不是持久的
我正在尝试将mongoNFS卷在kubernetes中不是持久的,kubernetes,nfs,Kubernetes,Nfs,我正在尝试将mongo/data目录装载到kubernetes主计算机中的NFS卷上,以持久化mongo数据。我看到卷已成功装入,但我只能看到configdb和db目录,但看不到它们的子目录。我看到数据甚至没有在卷中持久化。当我kubectl description时,它显示了NFS(一种在pod的生命周期内持续的NFS挂载) 为什么会这样 我在kubernetes文件中看到: nfs卷允许保存现有nfs(网络文件系统)共享 登上你的吊舱。与emptyDir不同,emptyDir在吊舱打开时会被
/data
目录装载到kubernetes主计算机中的NFS卷上,以持久化mongo数据。我看到卷已成功装入,但我只能看到configdb
和db
目录,但看不到它们的子目录。我看到数据甚至没有在卷中持久化。当我kubectl description
时,它显示了NFS(一种在pod的生命周期内持续的NFS挂载)
为什么会这样
我在kubernetes文件中看到:
nfs卷允许保存现有nfs(网络文件系统)共享
登上你的吊舱。与emptyDir不同,emptyDir在吊舱打开时会被擦除
如果已删除,nfs卷的内容将被保留,卷将被删除
只是没有挂载。这意味着可以预填充NFS卷
有了数据,这些数据可以在吊舱之间“传递”。NFS可以是
由多个写入程序同时装入
我使用的是kubernetes版本1.8.3
mongo-deployment.yml:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: mongo
labels:
name: mongo
app: mongo
spec:
replicas: 3
selector:
matchLabels:
name: mongo
app: mongo
template:
metadata:
name: mongo
labels:
name: mongo
app: mongo
spec:
containers:
- name: mongo
image: mongo:3.4.9
ports:
- name: mongo
containerPort: 27017
protocol: TCP
volumeMounts:
- name: mongovol
mountPath: "/data"
volumes:
- name: mongovol
persistentVolumeClaim:
claimName: mongo-pvc
mongo-pv.yml:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-pv
labels:
type: NFS
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: "/mongodata"
server: 172.20.33.81
mongo-pvc.yml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongo-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 3Gi
storageClassName: slow
selector:
matchLabels:
type: NFS
我在kubernetes主计算机上装载nfs共享的方式:
1) apt-get install nfs-kernel-server
2) mkdir /mongodata
3) chown nobody:nogroup -R /mongodata
4) vi /etc/exports
5) added the line "/mongodata *(rw,sync,all_squash,no_subtree_check)"
6) exportfs -ra
7) service nfs-kernel-server restart
8) showmount -e ----> shows the share
我登录到我的pod的bash,我看到目录已正确装载,但数据未持久保存在我的nfs服务器(kubernetes主计算机)中
请帮我看看我做错了什么。可能pods没有创建文件和目录的权限。您可以
exec
到您的pod,并尝试触摸NFS共享中的文件。如果出现权限错误,您可以放松对文件系统的权限,并导出
文件以允许写访问
可以在PV对象中指定GID
,以避免权限被拒绝的问题。
我看到你做了一个chown nobody:nogroup-R/mongodata
。
确保pod上的应用程序以nobody:nogroup
的方式运行。将参数mountOptions:“vers=4.1”
添加到StorageClass配置中,这将解决您的问题
有关更多信息,请参阅此Github注释: