【错误】
正常创建storageclass,但是创建PVC一直Pending,查看PV没有被创建
| [root@crust-m02 ~]# kubectl get pvc |
| NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE |
| test-claim1 Pending nfs-client 1 0m |
【分析】
| [root@crust-m02 ~]# kubectl logs -n storageclass storageclass-nfs-client-provisioner-96d4f67c5-svqf9 |
| E0708 09:54:04.267529 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 10:05:26.529992 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 10:05:26.533022 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 10:20:26.530290 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 10:20:26.535305 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 10:35:26.530458 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 10:35:26.533075 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 10:50:26.530627 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 10:50:26.535387 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 11:05:26.530833 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 11:05:26.537123 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 11:20:26.530968 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 11:20:26.534794 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
| I0708 11:35:26.531254 1 controller.go:987] provision "default/test-claim1" class "nfs-client": started |
| E0708 11:35:26.536277 1 controller.go:1004] provision "default/test-claim1" class "nfs-client": unexpected error getting claim reference: selfLink was empty, can't make reference |
可见错误:selfLink was empty, can't make reference
查了一下资料,发现是 1.20版本之后 禁用了 selfLink
【解决】
- 启用 selfLink
在每个master节点上修改kube-apiserver的yml文件 :/etc/kubernetes/manifests/kube-apiserver.yaml
添加- --feature-gates=RemoveSelfLink=false
这一行,如下所示:
| spec: |
| containers: |
| - command: |
| - kube-apiserver |
| - --feature-gates=RemoveSelfLink=false |
| - --advertise-address=10.10.239.201 |
| - --allow-privileged=true |
因为这是静态pod,修改完成后会自动更新(了解静态pod可以参见我的文档《k8s-静态pod》)
如下可见,三个apiserver都更新了:
| [root@crust-m01 ~]# kubectl get pod -n kube-system |
| NAME READY STATUS RESTARTS AGE |
| …… |
| kube-apiserver-crust-m01 1/1 Running 0 6m |
| kube-apiserver-crust-m02 1/1 Running 0 9m |
| kube-apiserver-crust-m03 1/1 Running 0 60s |
| …… |
- 测试
删除storageclass的pod,新pod自启动后可以正常使用storageclass创建pv了
| [root@crust-m01 ~]# kubectl get pvc |
| NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE |
| test-claim1 Bound pvc-36bab495-1b32-4dbb-8daf-bd3d48c0c2cb 1Mi RWX nfs-client 43m |
| [root@crust-m01 ~]# kubectl get pv |
| NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE |
| pvc-36bab495-1b32-4dbb-8daf-bd3d48c0c2cb 1Mi RWX Delete Bound default/test-claim1 nfs-client 43m |

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~