kubernetes 如何使用相同的EFS文件存储器作为两个静态持久存储器?

gudnpqoy  于 4个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(50)

我想使用same efs作为two static volumes.
为此,我创建了以下两个PersistentVolume Yamls:

两个PV

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"

字符串

两个PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc001
spec:
 resources:
  requests:
   storage: 3Gi
 volumeMode: Filesystem
 accessModes:
 - ReadWriteMany

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc002
spec:
 resources:
  requests:
   storage: 6Gi
 volumeMode: Filesystem
 accessModes:
 - ReadWriteMany

部署

apiVersion: apps/v1
kind: Deployment
metadata:
 name: test
spec:
 replicas: 3
 selector:
  matchLabels:
   app: test
 template:
  metadata:
   labels:
    app: test
  spec:
   containers:
   - image: nginx
     name: nginx-cont
     volumeMounts:
     - name: logs
       mountPath: /usr/share/nginx/html
     - name: data
       mountPath: /var/www/html
   volumes:
   - name: logs
     persistentVolumeClaim:
      claimName: pvc001
   - name: data
     persistentVolumeClaim:
      claimName: pvc002


然而,这是抛出下面的错误:

Unable to attach or mount volumes: unmounted volumes=[logs], unattached volumes=[], failed to process volumes=[logs]:

cedebl8k

cedebl8k1#

我通常做的有点不同。我创建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/

相关问题