首页 文章

面对将EFS卷附加到Kubernetes pod的问题

提问于
浏览
2

我在aws eks的kubernetes集群的帮助下运行我的docker容器 . 我的两个docker容器正在使用共享卷,这两个容器都在两个不同的pod中运行 . 所以我想要一个可以被aws上的pod使用的公共音量 .

我创建了一个EFS卷并已安装 . 我正在关注链接以创建PersistentVolumeClaim . 但是当efs-provider pod尝试附加已安装的EFS卷空间时,我收到超时错误 . VolumeId,区域只是正确的 .

Pod描述的详细错误消息:

超时已过期等待连接或装入pod“default”/“efs-provisioner-55dcf9f58d-r547q”的卷 . 未安装卷列表= [pv-volume] . 未附加卷的列表= [pv-volume default-token-lccdw]卷“pv-volume”的MountVolume.SetUp失败:挂载失败:退出状态32

2 回答

  • 0

    AWS EFS使用NFS类型卷插件,并且根据Kubernetes Storage Classes NFS卷插件不附带内部Provisioner,如EBS .

    所以步骤将是:

    • 为NFS卷插件创建外部Provisioner .

    • 创建存储类 .

    • 创建一个卷声明 .

    • 在部署中使用卷声明 .

    • 在configmap部分中,更改file.system.id:和aws.region:以匹配您创建的EFS的详细信息 .

    • 在部署部分中,将服务器:更改为您创建的EFS的DNS endpoints .

    --- apiVersion: v1 kind: ConfigMap metadata: name: efs-provisioner data: file.system.id: yourEFSsystemid aws.region: regionyourEFSisin provisioner.name: example.com/aws-efs

    --- kind: Deployment apiVersion: extensions/v1beta1 metadata: name: efs-provisioner spec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: efs-provisioner spec: containers: - name: efs-provisioner image: quay.io/external_storage/efs-provisioner:latest env: - name: FILE_SYSTEM_ID valueFrom: configMapKeyRef: name: efs-provisioner key: file.system.id - name: AWS_REGION valueFrom: configMapKeyRef: name: efs-provisioner key: aws.region - name: PROVISIONER_NAME valueFrom: configMapKeyRef: name: efs-provisioner key: provisioner.name volumeMounts: - name: pv-volume mountPath: /persistentvolumes volumes: - name: pv-volume nfs: server: yourEFSsystemID.efs.yourEFSregion.amazonaws.com path: /

    --- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: aws-efs provisioner: example.com/aws-efs --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: efs annotations: volume.beta.kubernetes.io/storage-class: "aws-efs" spec: accessModes: - ReadWriteMany resources: requests: storage: 1Mi

    ---

    有关更多说明和详细信息,请访问https://github.com/kubernetes-incubator/external-storage/tree/master/aws/efs

  • 0

    问题是,我有2个ec2实例正在运行,但我将EFS卷安装到只有一个ec2实例,而kubectl总是在没有安装卷的ec2实例上部署pod . 现在我将相同的音量安装到两个实例上并使用PVC,PV如下所示 . 它工作正常 .

    ec2安装:AWS EFS mounting with EC2

    PV.yml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs
    spec:
      capacity:
        storage: 100Mi
      accessModes:
        - ReadWriteMany
      nfs:
        server: efs_public_dns.amazonaws.com
        path: "/"
    

    PVC.yml

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: efs
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 100Mi
    

    replicaset.yml

    -----只有卷节-----

    volumes:
      - name: test-volume
        persistentVolumeClaim:
          claimName: efs
    

相关问题