我试图创建一个Kubernetes pod,其中包含一个容器,该容器上安装了两个外部卷。我的.yml pod文件是:
apiVersion: v1
kind: Pod
metadata:
name: my-project
labels:
name: my-project
spec:
containers:
- image: my-username/my-project
name: my-project
ports:
- containerPort: 80
name: nginx-http
- containerPort: 443
name: nginx-ssl-https
imagePullPolicy: Always
volumeMounts:
- mountPath: /home/projects/my-project/media/upload
name: pd-data
- mountPath: /home/projects/my-project/backups
name: pd2-data
imagePullSecrets:
- name: vpregistrykey
volumes:
- name: pd-data
persistentVolumeClaim:
claimName: pd-claim
- name: pd2-data
persistentVolumeClaim:
claimName: pd2-claim
我正在使用Persistent Volumes和Persisten Volume Claims,如下所示:PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: pd-disk
labels:
name: pd-disk
spec:
capacity:
storage: 250Gi
accessModes:
- ReadWriteOnce
gcePersistentDisk:
pdName: "pd-disk"
fsType: "ext4"
PVC
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pd-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 250Gi
我最初使用以下命令创建了磁盘:$ gcloud compute disks create --size 250GB pd-disk
第二个磁盘和第二个PV和PVC也是如此。当我创建pod时,一切似乎都正常,没有抛出错误。奇怪的部分来了其中一个路径正在正确安装(因此是持久的),另一个正在被擦除,每次我重新启动吊舱...
我试过从头开始重建一切,但没有任何改变。此外,从pod描述中可以看出,两个卷似乎都已正确挂载:
$ kubectl describe pod my-project
Name: my-project
...
Volumes:
pd-data:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: pd-claim
ReadOnly: false
pd2-data:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: pd2-claim
ReadOnly: false
任何帮助都很感激。谢谢
3条答案
按热度按时间iyr7buue1#
Kubernetes documentation声明:
卷不能挂载到其他卷上,也不能与其他卷有硬链接
我也遇到了同样的问题,在我的情况下,问题是两个卷的挂载都有重叠的挂载路径,即。都以/var/开头。
他们安装后没有问题修复。
vohkndzv2#
我没有看到任何直接的问题,这种行为如上所述已经发生!但是我更希望您尝试使用“Deployment”而不是许多here建议的“Pod”,特别是在使用PV和PVC时。部署需要处理许多事情来维护“期望状态”。我已经附上了我的代码下面为您的参考工作,这两个卷是持久的,即使在删除/终止/重新启动,因为这是由部署的所需状态管理.
你会发现我的代码和你的代码有两个不同之处:
1.我有一个部署对象而不是pod
1.我正在使用GlusterFs作为我的音量。
部署yml.
我的PV之一
PVC用于上述
3npbholx3#
一个可能的原因是两个PV中的
volumeHandle
相同,这将导致无法将两个PV安装到同一个pod中。