1

我正在使用 IBM Kubernetes Service,需要在 PVC 中创建一个目录。已经创建了 2 个 PVC。我可以使用它来创建一个目录还是应该创建一个新的目录,因为这两个已经绑定了?

另外,我尝试使用 PV yaml 文件创建新的 PV,但是一旦我尝试创建它,它就会被杀死。然后,我尝试直接创建一个引用我们拥有的存储类的 PVC。但是,这里也发生了同样的事情。这可能是因为 NFS 的某些访问问题还是其他原因?

创建目录后,我还需要将文件推送到其中。也需要一些帮助。

4

2 回答 2

1

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(文件)存储,但如果您正在大量读写,这可能会导致性能下降。如果您发现自己正在这样做,那么文件存储可能不是您想要的,您应该探索数据库或对象存储。

于 2021-04-16T15:33:12.843 回答
0

我有样本 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

检查这可能有助于您询问访问模式

于 2021-04-19T07:21:07.130 回答