用helm安装nfs后,创建了默认的storageClass,
[root@k8s-master ~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client cluster.local/nfs-nfs-client-provisioner Delete Immediate true 24m
然后资源清单链接这个nfs-client 创建pvc时候,总是提示pending状态
[root@k8s-master ~]# cat sccc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-sc2
spec:
storageClassName: nfs-client
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: 2Gi
[root@k8s-master ~]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-sc1 Pending nfs-client 6s
然后查看pod日志提示: unexpected error getting claim reference: selfLink was empty, can’t make reference
[root@k8s-master ~]# kubectl logs nfs-nfs-client-provisioner-f8f4cdb44-lmjlz
I0103 04:36:15.578403 1 controller.go:987] provision "default/test-sc2" class "nfs-client": started
E0103 04:36:15.583315 1 controller.go:1004] provision "default/test-sc2" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference
找资料发现,kubernetes 1.20版本 禁用了 selfLink。
解决方法:
编辑/etc/kubernetes/manifests/kube-apiserver.yaml在这里:
spec:
containers:
- command:
- kube-apiserver
添加这一行:
- --feature-gates=RemoveSelfLink=false
然后应用它,即可
kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml