当前位置: 首页 > news >正文

K8S中storageClass

从 NFS Provisioner (nfs-client-provisioner) 的日志来看,问题的核心是:

关键错误

E0806 14:01:35.881674 1 controller.go:1004] provision "default/test-claim" class "managed-nfs-storage": 
unexpected error getting claim reference: selfLink was empty, can't make reference

问题原因

  1. Kubernetes API 废弃了 **selfLink** 字段(v1.20+),但 NFS Provisioner 仍然依赖它。
  2. Provisioner 无法正确引用 PVC,导致动态 PV 创建失败。

解决方案

方法 1:启用 Legacy **selfLink**(临时方案)

kube-apiserver 配置中启用 selfLink(不推荐长期使用):

# 修改 /etc/kubernetes/manifests/kube-apiserver.yaml
spec:containers:- command:- kube-apiserver- --feature-gates=RemoveSelfLink=false  # 添加这一行

然后重启 kube-apiserver:

systemctl restart kubelet

⚠️ 警告selfLink 已在 Kubernetes v1.24 完全移除,此方法可能在将来失效。


方法 2:升级/替换 NFS Provisioner

方案 1:使用更新的 NFS Provisioner

推荐使用 NFS Subdir External Provisioner(社区维护的活跃项目):

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \--set nfs.server=<NFS_SERVER_IP> \--set nfs.path=/your/nfs/share \--set storageClass.name=managed-nfs-storage

方案 2:改用 CSI Driver

如果集群版本较新(v1.20+),建议迁移到 NFS CSI Driver

helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs \--set nfs.server=<NFS_SERVER_IP> \--set nfs.mountPath=/your/nfs/share

方法 3:手动创建 PV/PVC(临时绕过)

如果急需使用,可以手动创建 PV 并绑定 PVC:

# manual-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: test-pv-manual
spec:storageClassName: managed-nfs-storagecapacity:storage: 10GiaccessModes:- ReadWriteManynfs:server: <NFS_SERVER_IP>path: /your/nfs/share
kubectl apply -f manual-pv.yaml

验证步骤

  1. 检查 PV 是否创建
kubectl get pv
  1. 确认 PVC 已绑定
kubectl get pvc test-claim
    • STATUS 应为 **Bound**
  1. 重新部署 Pod
kubectl delete pod <your-pod> && kubectl apply -f pod.yaml

根本解决建议

方案 适用场景 备注
启用 **selfLink** 临时测试环境 不推荐生产使用
升级到 NFS Subdir Provisioner 兼容旧版 Kubernetes 社区维护,支持新 API
迁移到 NFS CSI Driver 新集群(v1.20+) 官方推荐方案
手动创建 PV 紧急恢复 需维护 PV 生命周期

推荐顺序

CSI Driver > NFS Subdir Provisioner > 手动 PV > 启用 **selfLink**


附加排查

如果问题仍未解决,请提供:

  1. NFS 服务器状态:
showmount -e <NFS_SERVER_IP>
  1. StorageClass 详细配置:
kubectl get sc managed-nfs-storage -o yaml
  1. PVC 的完整 YAML:
kubectl get pvc test-claim -o yaml

我会根据这些信息进一步分析! 🛠️

http://www.jsqmd.com/news/166241/

相关文章:

  • 大模型开发全攻略:从零训练你的专属AI编程助手,小白也能秒变大神!
  • 避免依赖冲突:用Miniconda-Python3.9构建纯净PyTorch环境
  • Conda index生成索引:Miniconda-Python3.9搭建私有Channel
  • Miniconda-Python3.9环境下多用户共享PyTorch开发环境配置
  • 2026北京昌平区公司纠纷律师事务所推荐指南:权威测评凸显专业优势,胜诉率领先机构盘点,法律问题咨询找靠谱律所不踩坑 - 苏木2025
  • 在Arm架构的ubuntu中,使用qt qmediaplayer播放视频报错Warning: “No decoder available for type ‘video/mpeg...
  • 阿赛姆ESD二极管在笔记本电脑HDMI2.1接口的应用
  • Anaconda prompt启动慢:Miniconda-Python3.9无GUI更快响应
  • Anaconda prompt启动慢:Miniconda-Python3.9无GUI更快响应
  • GitHub热门项目复现利器:Miniconda-Python3.9+PyTorch环境搭建
  • 哪家发稿渠道公司更靠谱?2025年终7家服务商横向评测与专业推荐! - 十大品牌推荐
  • PyTorch安装Mobile Interpreter:Miniconda-Python3.9支持移动端部署
  • Miniconda-Python3.9 + PyTorch:最适合论文复现的技术组合
  • Markdown PlantUML类图生成:Miniconda-Python3.9绘制架构图
  • Pyenv versions查看已安装:Miniconda-Python3.9列出可用版本
  • Pyenv version显示当前:Miniconda-Python3.9确认激活版本
  • iOS开发中CPU功耗监控的实现与工具使用
  • 收藏!2025年AI大模型重构程序员职业版图:告别焦虑,抓准50K高薪风口
  • 从零开始搞懂大模型:程序员必学的Transformer架构与LLM核心原理!
  • GitHub开源项目依赖复杂?Miniconda-Python3.9帮你隔离解决
  • Docker Port映射配置:Miniconda-Python3.9开放Jupyter端口
  • 2025-2026年这家环境监测与水质分析设备厂家实力“出圈” - 品牌推荐大师1
  • 程序员必学:RAG系统中的问题意图识别技术,建议收藏学习
  • python基于Vue的远程就医专家挂号预约系统 _4b2uo_django Flask pycharm项目
  • PyTorch安装分布式RPC:Miniconda-Python3.9支持跨节点通信
  • 为科研而生:Miniconda-Python3.9实现PyTorch环境精确复现
  • Miniconda-Python3.9是否真的比Anaconda更适合PyTorch开发?
  • 2026最新实验台、通风柜、实验室装修、实验室规划设计厂家推荐:迅领实验室引领行业新标准 - 深度智识库
  • 衣物隐喻下的生命缝合:目前最先进的哲学理论《升命学说》,论“唯悟”作为世界的针线
  • 2026游泳馆等美团自助核销接口教程,赶紧收藏起来