在工作中接到客户反馈测试环境vessel服务异常,查看日志发现pvc状态异常。

[root@lolicp ~]# k get pvc
NAME         STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
manual-pvc   Pending                                      manual         27s
[root@lolicp ~]# k describe pvc manual-pvc
Name:          manual-pvc
Namespace:     default
StorageClass:  manual
Status:        Pending
Volume:        
Labels:        <none>
Annotations:   <none>
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
VolumeMode:    Filesystem
Used By:       <none>
Events:
  Type     Reason              Age               From                         Message
  ----     ------              ----              ----                         -------
  Warning  ProvisioningFailed  0s (x4 over 35s)  persistentvolume-controller  storageclass.storage.k8s.io "manual" not found

排查思路

查看storageclass

通过命令发现并不存在名为manualstorageclass

[root@lolicp ~]# k get sc
NAME                   PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path          Delete          WaitForFirstConsumer   false                  513d
local-volume           kubernetes.io/no-provisioner   Delete          Immediate              false                  29m
查看pv
状态含义
Available空闲 PV,未被绑定
Bound被某个 PVC 绑定
ReleasedPVC 被删除,但 PV 还没回收
Failed回收失败(比如无法清空 hostPath)

查看pv时发现STATUS变为了Released

[root@lolicp ~]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                                                   STORAGECLASS   REASON   AGE
manual-pv                                  1Gi        RWO            Retain           Released   default/manual-pvc                                      manual                  57s

创建storageclass

最好根据实际情况创建。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: manual
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate

创建后需要重建pvc,可能等待也可以?

重置pv状态

重置完成后,预计5分钟内会刷新绑定关系。

[root@lolicp ~]# kubectl patch pv manual-pv -p '{"spec":{"claimRef": null}}'
persistentvolume/manual-pv patched

验证

[root@lolicp ~]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                                   STORAGECLASS   REASON   AGE
manual-pv                                  1Gi        RWO            Retain           Available                                                           manual      
[root@lolicp ~]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                                   STORAGECLASS   REASON   AGE
manual-pv                                  1Gi        RWO            Retain           Bound    default/manual-pvc                                      manual                  4m29s
[root@lolicp ~]# kubectl get pvc
NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
manual-pvc   Bound    manual-pv   1Gi        RWO            manual         50s
END

本文标题:记一次PVC报错storageclass.storage.k8s.io "manual" not found处理

本文作者:宇宙最帅的男人

本文链接:https://lolicp.com/kubernetes/202503758.html

版权声明:转载或者引用本文内容请注明来源及原作者,本文著作权归 (lolicp.com) 所有。

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

最后修改:2025 年 07 月 03 日
如果觉得我的文章对你有用,请随意赞赏