我正在使用 IBM Kubernetes Service,需要在 PVC 中创建一个目录。已经创建了 2 个 PVC。我可以使用它来创建一个目录还是应该创建一个新的目录,因为这两个已经绑定了?
另外,我尝试使用 PV yaml 文件创建新的 PV,但是一旦我尝试创建它,它就会被杀死。然后,我尝试直接创建一个引用我们拥有的存储类的 PVC。但是,这里也发生了同样的事情。这可能是因为 NFS 的某些访问问题还是其他原因?
创建目录后,我还需要将文件推送到其中。也需要一些帮助。
我正在使用 IBM Kubernetes Service,需要在 PVC 中创建一个目录。已经创建了 2 个 PVC。我可以使用它来创建一个目录还是应该创建一个新的目录,因为这两个已经绑定了?
另外,我尝试使用 PV yaml 文件创建新的 PV,但是一旦我尝试创建它,它就会被杀死。然后,我尝试直接创建一个引用我们拥有的存储类的 PVC。但是,这里也发生了同样的事情。这可能是因为 NFS 的某些访问问题还是其他原因?
创建目录后,我还需要将文件推送到其中。也需要一些帮助。
PVC 是卷(通常在 Block 或 NFS 设备上)和 Kubernetes pod 之间的链接。通常,当您将 PVC 绑定到 pod 时,会将其挂载到 pod 中容器内的特定路径上。
因此,如果您绑定 PVC 并将其安装到您的容器中/foo
,那么您应该能够将文件直接写入该文件夹。例如,如果您正在运行一个 bash 脚本,那么您可以echo "this is some text" > /foo/test.txt
并且文本“这是一些文本”应该最终出现在文件夹中调用test.txt
的/foo
文件中。因为那是通过 PVC 指向您的外部存储卷,所以数据将持久保存到该位置。
但请记住,块设备通常只允许挂载到单个 pod,因此如果您正在运行部署的三个实例,那么您将从三个独立的存储位置读取和写入。
解决此限制的一种方法是使用 NFS(文件)存储,但如果您正在大量读写,这可能会导致性能下降。如果您发现自己正在这样做,那么文件存储可能不是您想要的,您应该探索数据库或对象存储。
我有样本 PV、PVC 代码
vi pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-xfusion
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/itadmin"
kubectl create -f pv.yml
sudo vi pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-xfusion
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
kubectl create -f pvc.yml
vi sudo pod.yml
apiVersion: v1
kind: Pod
metadata:
name: pod-xfusion
spec:
volumes:
- name: storage-xfusion
persistentVolumeClaim:
claimName: pvc-xfusion
- name: container-xfusion
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/www/html"
name: storage-xfusion
kubectl create -f pod.yml
检查这可能有助于您询问访问模式