如何使用相同的 EFS 文件系统作为两个静态持久卷?

问题描述 投票:0回答:1

我想使用

same efs
作为
two static volumes.

为此,我创建了以下两个

PersistentVolume Yamls:

apiVersion: v1
kind: PersistentVolume
metadata:
 name: pv001
spec:
 capacity:
  storage: 5Gi
 volumeMode: Filesystem
 accessModes:
 - ReadWriteMany
 persistentVolumeReclaimPolicy: Delete
 csi:
  driver: efs.csi.aws.com
  volumeHandle: fs-0fd788366150f8667.efs.us-east-1.amazonaws.com
  volumeAttributes:
   path: "/logs"

apiVersion: v1
kind: PersistentVolume
metadata:
 name: pv002
spec:
 capacity:
  storage: 5Gi
 volumeMode: Filesystem
 accessModes:
 - ReadWriteMany
 persistentVolumeReclaimPolicy: Delete
 csi:
  driver: efs.csi.aws.com
  volumeHandle: fs-0fd788366150f8667.efs.us-east-1.amazonaws.com
  volumeAttributes:
   path: "/data"

但是,这会引发以下错误:

Unable to attach or mount volumes: unmounted volumes=[logs], unattached volumes=[], failed to process volumes=[logs]:
amazon-web-services kubernetes kubectl persistent-volumes volumes
1个回答
0
投票

我通常会采取一些不同的做法。我创建了 pv:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: efs-pv
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: efs.csi.aws.com
    volumeHandle: fs-0000000000000000e

然后我创建 PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: efs-claim
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 5Gi

然后我像这样使用它(仅作为示例):

apiVersion: v1
kind: Pod
metadata:
  name: upperlower-pod
  labels:
    app: upperlower
spec:
  containers:
    - name: upperall
      image: dm/upperall:latest
      imagePullPolicy: Always
      volumeMounts:
        - name: persistent-storage
          mountPath: /data
  volumes:
    - name: persistent-storage
      persistentVolumeClaim:
        claimName: efs-claim

在应用程序内部,如下所示:

...
# Configure the logger
log_dir = '/data/logs'
log_filename = 'app.log'
log_path = os.path.join(log_dir, log_filename)

logging.basicConfig(
    filename=log_path,
    level=logging.DEBUG,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

incoming_dir = '/data/incoming'
processed_dir = '/data/processed'
...

更多信息:https://aws.amazon.com/blogs/storage/persistent-storage-for-kubernetes/

© www.soinside.com 2019 - 2024. All rights reserved.