gpt4 book ai didi

kubernetes - 如何为 Kubernetes 配置 'efs-provider'?

转载 作者:行者123 更新时间:2023-12-02 11:37:04 24 4
gpt4 key购买 nike

我已按照 guide 中的步骤进行操作这个guide部署efs-provider用于 Kubernetes 并绑定(bind) EFS 文件系统。我没有成功。

我正在使用 Amazon EKS 实现 Kubernetes,并且我使用 EC2 实例作为工作节点,所有这些都使用 eksctl 进行部署.

在我应用此调整后 manifest file ,结果是:

$ kubectl get pods
NAME READY STATUS RESTARTS
efs-provisioner-#########-##### 1/1 Running 0

$ kubectl get pvc
NAME STATUS VOLUME
test-pvc Pending efs-storage

无论我等待多久,我的 PVC 状态都会停留在 Pending .

在创建 Kubernetes 集群和工作节点以及配置 EFS 文件系统之后,我应用了 efs-provider list 中包含所有指向 EFS 文件系统的变量。在 StorageClass配置文件指定为 spec.AccessModes字段为 ReadWriteMany .

此时我的 efs-provider pod 正在运行且没有错误, PVC 的状态是 Pending .会是什么?如何配置 efs-provider使用 EFS 文件系统?我应该等待多久才能获得 PVC Bound 中的状态?

更新

关于 Amazon Web Services 的配置,这些是我所做的:
  • 创建 EFS 文件系统后,我创建了一个 挂载点 对于我的节点所在的每个子网。
  • 给每个挂载点 附上 安全组使用入站规则授予每个节点组的安全组对 NFS 端口 (2049) 的访问权限。

  • 我的 EFS 安全组的描述是:
    {
    "Description": "Communication between the control plane and worker nodes in cluster",
    "GroupName": "##################",
    "IpPermissions": [
    {
    "FromPort": 2049,
    "IpProtocol": "tcp",
    "IpRanges": [],
    "Ipv6Ranges": [],
    "PrefixListIds": [],
    "ToPort": 2049,
    "UserIdGroupPairs": [
    {
    "GroupId": "sg-##################",
    "UserId": "##################"
    }
    ]
    }
    ],
    "OwnerId": "##################",
    "GroupId": "sg-##################",
    "IpPermissionsEgress": [
    {
    "IpProtocol": "-1",
    "IpRanges": [
    {
    "CidrIp": "0.0.0.0/0"
    }
    ],
    "Ipv6Ranges": [],
    "PrefixListIds": [],
    "UserIdGroupPairs": []
    }
    ],
    "VpcId": "vpc-##################"
    }

    部署
    kubectl describe deploy ${DEPLOY_NAME} 的输出命令是:
    $ DEPLOY_NAME=efs-provisioner; \
    > kubectl describe deploy ${DEPLOY_NAME}
    Name: efs-provisioner
    Namespace: default
    CreationTimestamp: ####################
    Labels: app=efs-provisioner
    Annotations: deployment.kubernetes.io/revision: 1
    kubectl.kubernetes.io/last-applied-configuration:
    {"apiVersion":"extensions/v1beta1","kind":"Deployment","metadata":{"annotations":{},"name":"efs-provisioner","namespace":"default"},"spec"...
    Selector: app=efs-provisioner
    Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
    StrategyType: Recreate
    MinReadySeconds: 0
    Pod Template:
    Labels: app=efs-provisioner
    Service Account: efs-provisioner
    Containers:
    efs-provisioner:
    Image: quay.io/external_storage/efs-provisioner:latest
    Port: <none>
    Host Port: <none>
    Environment:
    FILE_SYSTEM_ID: <set to the key 'file.system.id' of config map 'efs-provisioner'> Optional: false
    AWS_REGION: <set to the key 'aws.region' of config map 'efs-provisioner'> Optional: false
    DNS_NAME: <set to the key 'dns.name' of config map 'efs-provisioner'> Optional: true
    PROVISIONER_NAME: <set to the key 'provisioner.name' of config map 'efs-provisioner'> Optional: false
    Mounts:
    /persistentvolumes from pv-volume (rw)
    Volumes:
    pv-volume:
    Type: NFS (an NFS mount that lasts the lifetime of a pod)
    Server: fs-#########.efs.##########.amazonaws.com
    Path: /
    ReadOnly: false
    Conditions:
    Type Status Reason
    ---- ------ ------
    Available True MinimumReplicasAvailable
    OldReplicaSets: <none>
    NewReplicaSet: efs-provisioner-576c67cf7b (1/1 replicas created)
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal ScalingReplicaSet 106s deployment-controller Scaled up replica set efs-provisioner-576c67cf7b to 1

    Pod 日志
    kubectl logs ${POD_NAME} 的输出命令是:
    $ POD_NAME=efs-provisioner-576c67cf7b-5jm95; \
    > kubectl logs ${POD_NAME}
    E0708 16:03:46.841229 1 efs-provisioner.go:69] fs-#########.efs.##########.amazonaws.com
    I0708 16:03:47.049194 1 leaderelection.go:187] attempting to acquire leader lease default/kubernetes.io-aws-efs...
    I0708 16:03:47.061830 1 leaderelection.go:196] successfully acquired lease default/kubernetes.io-aws-efs
    I0708 16:03:47.062791 1 controller.go:571] Starting provisioner controller kubernetes.io/aws-efs_efs-provisioner-576c67cf7b-5jm95_f7c5689f-a199-11e9-a152-def1285e1be5!
    I0708 16:03:47.062877 1 event.go:221] Event(v1.ObjectReference{Kind:"Endpoints", Namespace:"default", Name:"kubernetes.io-aws-efs", UID:"f7c682cd-a199-11e9-80bd-1640944916e4", APIVersion:"v1", ResourceVersion:"3914", FieldPath:""}): type: 'Normal' reason: 'LeaderElection' efs-provisioner-576c67cf7b-5jm95_f7c5689f-a199-11e9-a152-def1285e1be5 became leader
    I0708 16:03:47.162998 1 controller.go:620] Started provisioner controller kubernetes.io/aws-efs_efs-provisioner-576c67cf7b-5jm95_f7c5689f-a199-11e9-a152-def1285e1be5!

    存储类
    kubectl describe sc ${STORAGE_CLASS_NAME} 的输出命令是:
    $ STORAGE_CLASS_NAME=aws-efs; \
    > kubectl describe sc ${STORAGE_CLASS_NAME}
    Name: aws-efs
    IsDefaultClass: No
    Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"aws-efs"},"provisioner":"aws-efs"}
    Provisioner: aws-efs
    Parameters: <none>
    AllowVolumeExpansion: <unset>
    MountOptions: <none>
    ReclaimPolicy: Delete
    VolumeBindingMode: Immediate
    Events: <none>

    PersistentVolumeClaim
    kubectl describe pvc ${PVC_NAME} 的输出命令是:
    $ PVC_NAME=efs; \
    > kubectl describe pvc ${PVC_NAME}
    Name: efs
    Namespace: default
    StorageClass: aws-efs
    Status: Pending
    Volume:
    Labels: <none>
    Annotations: kubectl.kubernetes.io/last-applied-configuration:
    {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"volume.beta.kubernetes.io/storage-class":"aws-efs"},"name":"...
    volume.beta.kubernetes.io/storage-class: aws-efs
    Finalizers: [kubernetes.io/pvc-protection]
    Capacity:
    Access Modes:
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Warning ProvisioningFailed 43s (x12 over 11m) persistentvolume-controller no volume plugin matched
    Mounted By: <none>

    About the questions

    1. Do you have the EFS filesystem id properly configured for your efs-provisioner?

      • Yes, both (from the fs and the configured) match.
    2. Do you have the proper IAM credentials to access this EFS?

      • Yes, my user has and also the eksctl tool configures it.
    3. Does that EFS path specified for your provisioner exist?

      • Yes, is only the root (/) path.
    4. Did you add an EFS endpoint to the subnet that your worker node(s) are running on, or ensure that your EFS subnets have an Internet Gateway attached?

      • Yes, I have added the EFS endpoints to the subnet that my worker node(s) are running on.
    5. Did you set your security group to allow the Inbound for NFS port(s)?

      • Yes.

    最佳答案

    我通过替换我的 StorageClass 的供应商名称解决了我的问题来自 kubernetes.io/aws-efs仅限 aws-efs .

    正如我们在 this issue comment 上看到的那样在 Github 上由 wongma7 发布:

    The issue is that provisioner is kubernetes.io/aws-efs. It can't begin with kubernetes.io as that is reserved by kubernetes.



    这解决了 ProvisioningFailed关于
    PersistentVolumeClaim
    上产生的事件由 persistentvolume-controller .

    关于kubernetes - 如何为 Kubernetes 配置 'efs-provider'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56910002/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com