【问题标题】:How to Deploy an existing EBS volume to EKS PVC?如何将现有 EBS 卷部署到 EKS PVC?
【发布时间】:2021-12-11 02:39:10
【问题描述】:

我在 AWS 中有一个现有的 ebs 卷,上面有数据。我需要创建一个 PVC 才能在我的 pod 中使用它。 遵循本指南:https://medium.com/pablo-perez/launching-a-pod-with-an-existing-ebs-volume-mounted-in-k8s-7b5506fa7fa3

persistentvolume.yaml

kind: PersistentVolume
apiVersion: v1
metadata:
  name: jenkins-volume
  labels:
    type: amazonEBS
spec:
  capacity:
    storage: 60Gi
  accessModes:
    - ReadWriteOnce
  awsElasticBlockStore:
    volumeID: vol-011111111x
    fsType: ext4
[$$]>kubectl describe pv
Name:            jenkins-volume
Labels:          type=amazonEBS
Annotations:     <none>
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:
Status:          Available
Claim:
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        60Gi
Node Affinity:   <none>
Message:
Source:
    Type:       AWSElasticBlockStore (a Persistent Disk resource in AWS)
    VolumeID:   vol-011111111x
    FSType:     ext4
    Partition:  0
    ReadOnly:   false
Events:         <none>

persistentVolumeClaim.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkins-pvc-shared4
  namespace: jenkins
spec:
  storageClassName: gp2
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 60Gi
[$$]>kubectl describe pvc jenkins-pvc-shared4 -n jenkins
Name:          jenkins-pvc-shared4
Namespace:     jenkins
StorageClass:  gp2
Status:        Pending
Volume:
Labels:        <none>
Annotations:   <none>
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode:    Filesystem
Mounted By:    <none>
Events:
  Type    Reason                Age                From                         Message
  ----    ------                ----               ----                         -------
  Normal  WaitForFirstConsumer  12s (x2 over 21s)  persistentvolume-controller  waiting for first consumer to be created before binding
[$$]>kubectl get pvc jenkins-pvc-shared4 -n jenkins
NAME                  STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
jenkins-pvc-shared4   Pending                                      gp2            36s

状态处于等待状态(等待消费者被附加) - 但它应该已经被配置了。

【问题讨论】:

    标签: kubernetes amazon-eks kubernetes-pvc


    【解决方案1】:

    “等待消费者”消息表明您的 StorageClass 已将其 volumeBindingMode 设置为 waitForFirstConsumer

    此设置的默认值为Immediate:一旦您注册了 PVC,您的卷配置器就会配置一个新的卷。

    另一方面,waitForFirstConsumer 会在配置卷之前等待 Pod 请求使用所述 PVC。

    您在此处看到的消息和行为听起来很正常。您可以创建一个安装该卷的部署,以确认配置按预期工作。

    【讨论】:

      【解决方案2】:

      尝试使用 fsType "xfs" 而不是 ext4

      【讨论】:

      • 绝对不是我推荐的东西,不知道基本操作系统是什么,并且考虑到 xfsprogs 在 Debian/Ubuntu/ 中不是默认发布的...
      【解决方案3】:

      您的 PV 的 StorageClass 为空。 根据您的指南,您创建了 storageClass “标准”,因此添加到您的 PersistentVolume 规范

      storageClassName: standard
      

      并将其设置为 persistentVolumeClaim 而不是 gp2

      【讨论】:

        【解决方案4】:

        正确的配置应该是:

        [$$]>cat persistentvolume2.yaml
        apiVersion: v1
        kind: PersistentVolume
        metadata:
          name: pv-name
        spec:
          accessModes:
          - ReadWriteOnce
          awsElasticBlockStore:
            fsType: ext4
            volumeID: aws://eu-west-2a/vol-123456-ID
          capacity:
            storage: 60Gi
          persistentVolumeReclaimPolicy: Retain
          storageClassName: gp2
        
        [$$]>cat persistentVolumeClaim2.yaml
        apiVersion: v1
        kind: PersistentVolumeClaim
        metadata:
          namespace: new-namespace
          labels:
            app.kubernetes.io/name: <app-name>
          name: pvc-name
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 60Gi
          storageClassName: gp2
          volumeName: pv-name
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-13
          • 2019-12-03
          • 2021-11-06
          • 1970-01-01
          • 1970-01-01
          • 2017-08-12
          相关资源
          最近更新 更多