AWS Kubernetes 持久卷 EFS

AWS Kubernetes Persistent Volumes EFS

部署我的存储容器后,我在 AWS EKS 集群中部署了 EFS 文件系统并且 运行。

kubectl get pod -n storage
NAME                                     READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-968445d79-g8wjr   1/1     Running   0          136m

当我尝试部署应用程序时,pod 未进入其挂起状态 0/1 同时 PVC 未限制其挂起状态。

这是实际应用程序部署后的日志。

I0610 13:26:11.875109       1 controller.go:987] provision "default/logs" class "efs": started
E0610 13:26:11.894816       1 controller.go:1004] provision "default/logs" class "efs": unexpected error getting claim reference: selfLink was empty, can't make reference

我正在使用 k8 1.20 版,你能帮我解决这个问题吗?

Kubernetes 1.20 停止传播 selfLink
有一个 workaround 可用,但它并不总是有效。

行后

spec:
  containers:
  - command:
    - kube-apiserver

添加

- --feature-gates=RemoveSelfLink=false

然后重新应用 API 服务器配置

kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml

此解决方法在版本 1.20(1.21 及更高版本)之后将不起作用,因为 selfLink 将被完全删除。


另一种解决方案是使用较新的 NFS 配置程序映像:
gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0