我正在尝试将mongo /data
目录挂载到我的kubernetes主机中的NFS卷上以保存mongo数据。我看到卷已成功装入,但我只能看到configdb
和db
目录,但不能看到它们的子目录。我看到数据甚至没有持续存在。当我kubectl describe <my_pv>
显示NFS (an NFS mount that lasts the lifetime of a pod)
为什么会这样?
我在kubernetes docs中看到:
nfs卷允许现有的NFS(网络文件系统)共享 安装到你的吊舱。与emptyDir不同,emptyDir是在Pod时删除的 删除后,将保留nfs卷的内容并且卷为 只是没有安装。这意味着可以预先填充NFS卷 使用数据,这些数据可以在pod之间“切换”。 NFS可以 由多个作家同时安装。
我正在使用kubernetes版本1.8.3。
蒙戈-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
蒙戈-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
蒙戈-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主机)中。
请帮我看看我在这里做错了什么。
答案 0 :(得分:1)
pod可能没有创建文件和目录的权限。如果获得权限错误,您可以exec
到您的pod并尝试touch
NFS共享中的文件,您可以放宽文件系统和exports
文件的权限以允许写访问。
可以在PV对象中指定GID
以避免权限被拒绝的问题。
https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#access-control
答案 1 :(得分:0)
我看到你做了nobody:nogroup
。
确保您的广告连播上的应用程序运行为void fillArr(vector <student> &arr, vector <student *> &ptrels){
student temp;
ifstream inFile ("index.txt");
while (!inFile.eof()) {
inFile >> temp.fName >> temp.Lname >> temp.gpa >> temp.id >> temp.email;
arr.push_back(temp);
ptrels.push_back(&arr.back());
}
// combine the two above loops
}
答案 2 :(得分:0)
将参数mountOptions: "vers=4.1"
添加到StorageClass配置中,这应该可以解决您的问题。
有关更多信息,请参阅此Github评论:
https://github.com/kubernetes-incubator/external-storage/issues/223#issuecomment-344972640