如何将AWS EFS卷挂载到Minikube集群并在Argo Workflows中使用
Minikube集群挂载AWS EFS卷完整操作步骤
前置准备
- 已在AWS控制台创建对应EFS实例,确保EFS关联的安全组入方向开放NFS端口(2049),允许本地机器公网IP访问
- 本地Minikube集群处于运行状态,已安装
kubectl命令行工具 - 本地已配置有权限读取EFS信息的AWS CLI凭证
步骤1:安装Minikube节点NFS依赖
Minikube默认没有预装NFS客户端工具,先执行命令安装:
minikube ssh "sudo apt update && sudo apt install -y nfs-common"
如果你的Minikube使用RPM系基础镜像,将上述命令中的apt替换为yum即可。
步骤2:部署AWS EFS CSI驱动到Minikube集群
执行以下命令部署官方稳定版EFS CSI驱动:
kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-2.5"
部署完成后验证驱动Pod运行状态:
kubectl get pods -n kube-system | grep efs-csi
正常情况下可看到efs-csi-controller和efs-csi-node相关Pod全部处于Running状态。
步骤3:创建EFS存储类(StorageClass)
新建efs-sc.yaml配置文件,将参数替换为你自己的EFS信息:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: aws-efs provisioner: efs.csi.aws.com parameters: fileSystemId: fs-xxxxxxx # 替换为你的EFS实例ID region: cn-north-1 # 替换为EFS所属的AWS区域 provisioningMode: efs-ap directoryPerms: "755"
应用配置创建存储类:
kubectl apply -f efs-sc.yaml
步骤4:创建供Argo Workflows使用的PVC
新建efs-pvc.yaml配置文件,注意命名空间和Argo Workflows部署的命名空间保持一致:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: efs-pvc namespace: argo # 替换为Argo Workflows所在命名空间 spec: accessModes: - ReadWriteMany storageClassName: aws-efs resources: requests: storage: 10Gi # EFS为弹性计费,此处数值仅做校验可随意填写
应用配置创建PVC:
kubectl apply -f efs-pvc.yaml
验证PVC状态,正常状态为Bound:
kubectl get pvc -n argo efs-pvc
步骤5:在Argo Workflow模板中引用存储
可直接在Workflow模板中通过PVC名称挂载EFS,参考示例如下:
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: efs-test- namespace: argo spec: entrypoint: efs-demo volumes: - name: efs-storage persistentVolumeClaim: claimName: efs-pvc # 对应上文创建的PVC名称 templates: - name: efs-demo container: image: alpine:latest command: [sh, -c] args: ["echo '测试内容' > /mnt/efs/test.txt && cat /mnt/efs/test.txt"] volumeMounts: - name: efs-storage mountPath: /mnt/efs # 容器内挂载路径可自定义
提交测试Workflow,执行成功后即可在AWS EFS控制台验证文件已正常写入。
常见问题排查
- PVC一直处于
Pending状态:优先检查EFS安全组是否放行本地公网IP的2049端口,再确认EFS ID、区域配置是否正确 - 容器挂载失败:执行
minikube ssh "nslookup 你的EFS域名"验证Minikube节点是否能正常解析EFS地址,确保本地网络到AWS服务的连通性正常
内容的提问来源于stack exchange,提问作者snorkel
相关产品推荐
相关产品推荐

