如何在 EKS 上的存储类中使用卷 gp3?

quo*_*c9x 4 cloud amazon-web-services kubernetes devops amazon-eks

我正在将 EKS 的卷 gp2 转换为卷 gp3,但出现此错误。
无法使用 StorageClass“gp3”配置卷:无效的 AWS VolumeType“gp3”
这是我的配置。

存储类

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  name: gp3
parameters:
  fsType: ext4
  type: gp3
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer   
Run Code Online (Sandbox Code Playgroud)

PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app: test-pvc
  name: test-pvc
  namespace: default
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: gp3   
Run Code Online (Sandbox Code Playgroud)

当我输入kubectl describe pvc/test. 这是回应:

Name:          test-pvc
Namespace:     default
StorageClass:  gp3
Status:        Pending
Volume:        
Labels:        app=test-pvc
Annotations:   volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
VolumeMode:    Filesystem
Used By:       <none>
Events:
  Type     Reason              Age                  From                         Message
  ----     ------              ----                 ----                         -------
  Warning  ProvisioningFailed  58s (x9 over 4m35s)  persistentvolume-controller  Failed to provision volume with StorageClass "gp3": invalid AWS VolumeType "gp3"   
Run Code Online (Sandbox Code Playgroud)

我使用的是 Kubernetes 版本 1.18。
有人能帮我吗。谢谢!

quo*_*c9x 10

gp3我找到了在 EKS 上的存储类中使用卷的解决方案。

  1. 首先,您需要在此处Amazon EBS CSI driver按照官方说明进行安装。
  2. 接下来,您需要在安装ebs-sc后创建存储类,例如:Amazon EBS CSI driver

cat << EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-sc
provisioner: ebs.csi.aws.com
parameters:
  type: gp3
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
EOF
Run Code Online (Sandbox Code Playgroud)

因此,您可以在 EKS 上的存储类中使用卷gp3
您可以通过部署资源来检查:

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ebs-gp3-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: ebs-sc
---
apiVersion: v1
kind: Pod
metadata:
  name: app-gp3-in-tree
spec:
  containers:
  - name: app
    image: nginx
    volumeMounts:
    - name: persistent-storage
      mountPath: /usr/share/nginx/html
  volumes:
  - name: persistent-storage
    persistentVolumeClaim:
      claimName: ebs-gp3-claim
EOF
Run Code Online (Sandbox Code Playgroud)

有关将 Amazon EKS 集群从 gp2 迁移到 gp3 EBS 卷的详细文档:https://aws.amazon.com/vi/blogs/containers/migration-amazon-eks-clusters-from-gp2-to-gp3-ebs-volumes/

参考:EKS 中的持久存储无法配置卷


goh*_*m'c 7

默认的 k8s 存储驱动程序最多仅支持 gp2。要使用 gp3,您需要安装 AWS EBS CSI 驱动程序。这是安装驱动程序的官方说明。