Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NFS卷在kubernetes中不是持久的_Kubernetes_Nfs - Fatal编程技术网

NFS卷在kubernetes中不是持久的

NFS卷在kubernetes中不是持久的,kubernetes,nfs,Kubernetes,Nfs,我正在尝试将mongo/data目录装载到kubernetes主计算机中的NFS卷上,以持久化mongo数据。我看到卷已成功装入,但我只能看到configdb和db目录,但看不到它们的子目录。我看到数据甚至没有在卷中持久化。当我kubectl description时,它显示了NFS(一种在pod的生命周期内持续的NFS挂载) 为什么会这样 我在kubernetes文件中看到: nfs卷允许保存现有nfs(网络文件系统)共享 登上你的吊舱。与emptyDir不同,emptyDir在吊舱打开时会被

我正在尝试将mongo
/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注释: