unexpected error getting claim reference: selfLink was empty, can‘t make reference

问题:

在使用nfs创建storageclass 实现存储的动态加载
分别创建 rbac、nfs-deployment、nfs-storageclass之后都正常运行
但在创建pvc时一直处于pending状态
kubectl describe pvc test-claim 查看pvc信息提示如下

Name:          test-claim
Namespace:     default
StorageClass:  managed-nfs-storage
Status:        Pending
Volume:        
Labels:        <none>
Annotations:   volume.beta.kubernetes.io/storage-class: managed-nfs-storage
               volume.beta.kubernetes.io/storage-provisioner: fuseim.pri/ifs
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
VolumeMode:    Filesystem
Used By:       <none>
Events:
  Type    Reason                Age               From                         Message
  ----    ------                ----              ----                         -------
  Normal  ExternalProvisioning  2s (x4 over 19s)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "fuseim.pri/ifs" or manually created by system administrator

查找无果然后查看nfs-pod状态,报错如下

[root@master manifests]# kubectl logs -f nfs-client-provisioner-6cf7cdc4fd-c6tr7
I1009 10:53:12.696646       1 leaderelection.go:185] attempting to acquire leader lease  default/qgg-nfs-storage...
"default/postgressqldb3-pvc" class "managed-nfs-storage": started
I1009 11:53:30.182237       1 controller.go:987] provision "default/sklmapp-pvc" class "managed-nfs-storage": started
E1009 11:53:30.188308       1 controller.go:1004] provision "default/postgressqldb3-pvc" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference
E1009 11:53:30.188914       1 controller.go:1004] provision "default/sklmapp-pvc" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference
I1009 12:08:30.182002       1 controller.go:987] provision "default/postgressqldb3-pvc" class "managed-nfs-storage": started
I1009 12:08:30.182090       1 controller.go:987] provision "default/sklmapp-pvc" class "managed-nfs-storage": started
E1009 12:08:30.190163       1 controller.go:1004] provision "default/sklmapp-pvc" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference
E1009 12:08:30.190196       1 controller.go:1004] provision "default/postgressqldb3-pvc" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference
^C

selfLink was empty 在k8s集群 v1.20之前都存在,在v1.20之后被删除,需要在/etc/kubernetes/manifests/kube-apiserver.yaml 添加参数
增加 - --feature-gates=RemoveSelfLink=false

spec:
  containers:
  - command:
    - kube-apiserver
    - --feature-gates=RemoveSelfLink=false

添加之后使用kubeadm部署的集群会自动加载部署pod

Just a note about /etc/kubernetes/manifests/kube-apiserver.yaml. 
When running the control-plane as an in-cluster service you should not need to apply changes to this file ever (via kubectl apply). 
As soon as you save the change to disk the apiserver pods will 
detect it and should conduct a Rolling Update. 
You can watch the progress with watch kubectl get pods --namespace kube-system. 
You can confirm the behavior after deleting the provisioner pod and letting it restart.
kubeadm安装的apiserver是Static Pod,它的配置文件被修改后,立即生效。
Kubelet 会监听该文件的变化,当您修改了 /etc/kubenetes/manifest/kube-apiserver.yaml 文件之后,kubelet 将自动终止原有的 kube-apiserver-{nodename} 的 Pod,并自动创建一个使用了新配置参数的 Pod 作为替代。
如果您有多个 Kubernetes Master 节点,您需要在每一个 Master 节点上都修改该文件,并使各节点上的参数保持一致。

这里需注意如果api-server启动失败 需重新在执行一遍

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

方法2:

使用新版本的nfs-subdir-external-provisioner

Public link:

GitHub - kubernetes-sigs/nfs-subdir-external-provisioner: Dynamic sub-dir volume provisioner on a remote NFS server.

GitHub - groundhog2k/nfs-subdir-external-provisioner: Dynamic sub-dir volume provisioner on a remote NFS server.

Docker Hub

So far there are 3 steps before applying helm:

  1. if you are using private/proxy registry make sure to point to the new image in gcr instead of the old one in quay.
  2. delete MANUALLY 2 resources : the storageclass & the deployment

     3.  Then run helm apply

这个问题已经在github上有详细介绍
Using Kubernetes v1.20.0, getting "unexpected error getting claim reference: selfLink was empty, can't make reference" · Issue #25 · kubernetes-sigs/nfs-subdir-external-provisioner · GitHub


 

回答: 当在Windows系统中将文件直接拖入虚拟机VMware的Linux系统中,并使用命令tar -zxvf 压缩包名时,如果出现"tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now"的错误提示,这通常表示压缩包文件损坏或不完整。\[1\]\[2\]\[3\]这可能是由于文件在传输过程中发生了错误或者压缩包本身存在问题。为了解决这个问题,你可以尝试重新下载或传输压缩包文件,并确保文件完整无损。如果问题仍然存在,你可以尝试使用其他解压缩工具或者检查压缩包文件的格式是否正确。 #### 引用[.reference_title] - *1* *3* [gzip: stdin: unexpected end of file tar: Unexpected EOF in archive tar: Unexpected EOF in archive ta](https://blog.csdn.net/weixin_45733714/article/details/124402222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [xshell--tar解压Unexpected EOF in archive错误](https://blog.csdn.net/leitouguan8655/article/details/82895146)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值