Kubernetes nfs 提供程序 selfLink 为空

Hen*_*rik 1 storage nfs kubernetes

昨天我创建了一个新的 kubernetes 集群(v1.20.1,本地),我想添加 NFS 配置。唯一可用(并仍在维护)的 NFS 供应商似乎是https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

它确实说要使用您自己的供应商,并且默认 (quay.io/external_storage/nfs-client-provisioner:latest) 已使用两年,但我没有自己的供应商。

当我遵循没有舵图的部署指南并检查 nfs-client-provisioner 日志时,我看到以下内容:

I1220 22:20:44.160099       1 leaderelection.go:185] attempting to acquire leader lease  default/fuseim.pri-ifs...
E1220 22:21:01.598029       1 event.go:259] Could not construct reference to: '&v1.Endpoints{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"fuseim.pri-ifs", GenerateName:"", Namespace:"default", SelfLink:"", UID:"c852ca40-471f-4019-a099-d72d32555022", ResourceVersion:"134579", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:63744022156, loc:(*time.Location)(0x1956800)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string{"control-plane.alpha.kubernetes.io/leader":"{\"holderIdentity\":\"nfs-client-provisioner-5999484954-n4tj7_94db294f-4261-11eb-9b30-c64536689731\",\"leaseDurationSeconds\":15,\"acquireTime\":\"2020-12-20T01:21:01Z\",\"renewTime\":\"2020-12-20T01:21:01Z\",\"leaderTransitions\":2}"}, OwnerReferences:[]v1.OwnerReference(nil), Initializers:(*v1.Initializers)(nil), Finalizers:[]string(nil), ClusterName:""}, Subsets:[]v1.EndpointSubset(nil)}' due to: 'selfLink was empty, can't make reference'. Will not report event: 'Normal' 'LeaderElection' 'nfs-client-provisioner-5999484954-n4tj7_94db294f-4261-11eb-9b30-c64536689731 became leader'
I1220 22:21:01.598123       1 leaderelection.go:194] successfully acquired lease default/fuseim.pri-ifs
I1220 22:21:01.598198       1 controller.go:631] Starting provisioner controller fuseim.pri/ifs_nfs-client-provisioner-5999484954-n4tj7_94db294f-4261-11eb-9b30-c64536689731!
I1220 22:21:01.709535       1 controller.go:680] Started provisioner controller fuseim.pri/ifs_nfs-client-provisioner-5999484954-n4tj7_94db294f-4261-11eb-9b30-c64536689731!
I1220 22:21:01.717419       1 controller.go:987] provision "default/test-claim" class "managed-nfs-storage": started
E1220 22:21:01.720318       1 controller.go:1004] provision "default/test-claim" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference
I1220 22:36:01.615073       1 controller.go:987] provision "default/test-claim" class "managed-nfs-storage": started
E1220 22:36:01.618195       1 controller.go:1004] provision "default/test-claim" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference
Run Code Online (Sandbox Code Playgroud)

这是我的集群还是这个供应商的问题?我真的没有头绪。

我也可以放弃这个供应商,甚至 NFS,以换取其他东西。我只需要每个 pod 实例的存储才能工作,例如 volumeClaimTemplates,存储在我的 kubernetes 集群之外。如果有人有任何建议,请告诉我!

提前致谢,亨德里克

Mat*_*att 6

由于以下原因,您会看到此错误:KEP-1164:弃用并删除 SelfLink

引用来自提到的 KEP:

在 v1.16 中,我们将通过以下方式弃用 ObjectMeta 和 ListMeta 对象中的 SelfLink 字段: 在字段定义中记录它已弃用并将被删除 添加有关字段弃用的发行说明 我们还将引入一个功能门以允许禁用设置 SelfLink 字段并不透明将其设置在此功能门后面的逻辑。

在 v1.20(v1.16 的 12 个月和 4 个版本)中,我们将关闭功能门 ,这将自动禁用设置 SelfLinks。但是, 仍然可以通过更改 特征门的值来恢复行为

在 v1.21 中,我们将摆脱传播这些字段和字段本身的整个代码。与此同时,我们将检查引用该字段的地方(见下文)并删除这些地方。

如您所见,您可以使用featureGate重新启用它:RemoveSelfLink=false虽然它没有被推荐并且 SelfLink 将在 v1.21 中被永久删除

另请在 github 上检查此问题:Using Kubernetes v1.20.0, getting "unexpected error getting claim reference: selfLink was empty, can't make reference