我们重新部署了k8s环境,centos7环境下使用的k8s1.27.0这个版本,今天在部署k8s上使用storageclass资源资源部署nfs使用时,POD挂载nfs资源报错提示“unexpected error getting claim reference: selfLink was empty, can't make reference”
出现上述这个问题是因为在k8s1.21之后的版本移除了selfLink机制,kube-apiserver的解决方法是作为–feature-gates=RemoveSelfLink=false参数传递,这种方式一直维持到k8s1.21这个版本,添加方式可以查看https://sulao.cn/post/826.html这个笔记的最后
在高版本的k8s集群中解决该问题,直接替换nfs provisioner的deploy的镜像即可,整个我都复制过来了。
cat nfs-provisioner.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nfs-client-provisioner labels: app: nfs-client-provisioner spec: replicas: 1 selector: matchLabels: app: nfs-client-provisioner strategy: type: Recreate selector: matchLabels: app: nfs-client-provisioner template: metadata: labels: app: nfs-client-provisioner spec: serviceAccountName: nfs-client-provisioner containers: - name: nfs-client-provisioner image: k8s.dockerproxy.com/sig-storage/nfs-subdir-external-provisioner:v4.0.2 #修改这里镜像为这个即可 volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: nfs-storage #provisioner名称,请确保该名称与 nfs-StorageClass.yaml文件中的provisioner名称保持一致 - name: NFS_SERVER value: 192.168.137.10 #NFS Server IP地址 - name: NFS_PATH value: /data/nas3 #NFS挂载卷 volumes: - name: nfs-client-root nfs: server: 192.168.137.10 #NFS Server IP地址 path: /data/nas3 #NFS 挂载卷
然后使用k8s.dockerproxy.com/sig-storage/nfs-subdir-external-provisioner:v4.0.2这个镜像以后POD能够正常挂载nfs存储了。