• k8s 1.28版本:使用StorageClass动态创建PV,SelfLink 问题修复


      k8s中提供了一套自动创建 PV 的机制,就是基于 StorageClass 进行的,通过 StorageClass 可以实现仅仅配置 PVC,然后交由 StorageClass 根据 PVC 的需求动态创建 PV。

    问题:
      使用 k8s 1.28版本,通过 kubectl get pvc,发现 PVC一直处于 Pending 状态。通过kubectl describe pvc [pvc名称]描述,发现如下错误:Waiting for a volume to be created either by the external provisioner 'fuseim.pri/ifs' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.

     
    原因:
      在 k8s 1.20 之后,出于对性能和统一 apiserver 调用方式的初衷,k8s 移除了对 SelfLink 的支持,而默认上面指定的 provisioner 版本需要 SelfLink 功能,因此 PVC 无法进行自动制备。

     
    说明:
      使用的二进制方式安装的 k8s 1.28 版本,并没有 /etc/kubernetes/manifests/kube-apiserver.yaml 这个文件。网上通篇说的关于 SelfLink 的问题就是那两种解决方案。

    1.启用SelfLink
    kube-apiserver.yaml 新增:–feature-gates=RemoveSelfLink=false

    2.使用不需要SelfLink的provisioner
    比如:registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0

    但是,这两种方案,在 k8s 1.28 版本中,并不生效!!!

     
    解决Pending方案:

    1.使用 helm 安装 nfs驱动,并修改成自己的 nfs服务器ippath

     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=192.168.0.32 \
        --set nfs.path=/data/nfs/rw
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.修改自己的 StorageClass文件,将驱动修改成 helm安装的驱动接口

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: managed-nfs-storage
      namespace: kube-system
    provisioner: cluster.local/nfs-subdir-external-provisioner # 修改此处!!!外部制备器提供者,编写为提供者的名称
    parameters:
      archiveOnDelete: "false" 
    reclaimPolicy: Retain 
    volumeBindingMode: Immediate 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    本文结束,谢谢

  • 相关阅读:
    终端天线—11.NFC线圈仿真
    谷粒学苑 —— 5、课程分类管理
    langchain介绍之-Prompt
    php实战案例记录(20)时间比较
    ElasticSearch 学习7 集成ik分词器
    C++ using的使用
    【鸿蒙软件开发】ArkTS基础组件之TextClock(时间显示文本)、TextPicker(滑动选择文本)
    AOP 笔记
    mysql数据库基础:约束、标识列
    微信小程序和H5之间互相跳转、互相传值
  • 原文地址:https://blog.csdn.net/lzb348110175/article/details/134034634