部署有状态服务时卷声明一直挂着,Pod 因为无法挂载卷而调度不出去。

真正麻烦的地方在于,几个原因的现象几乎一样。声明的存储类名称写错或者集群里没有;没有可用容量满足申请的大小;访问模式与后端存储支持的不一致。

先看卷声明的事件

kubectl describe pvc 名称 | grep -A5 Events

接着列出可用的存储类

kubectl get storageclass

随后核对访问模式是否匹配

kubectl get pvc 名称 -o yaml | grep -A2 accessModes

修正存储类后重建声明

kubectl get pv | head

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

这类改动我都写进变更记录,过两周再出问题时能对上号。

改完先别撤,确认这几项。卷声明绑定成功,Pod 正常调度并挂载,业务启动完成。

补一句。访问模式写成多节点读写但后端只支持单节点,会一直处于等待状态;申请容量也要确认后端真的有余量。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189