pvc
针对pvc的Spec.VolumeName为空的
如果未找到volume
设置了classname且class的VolumeBindingMode为Immediate且volume.kubernetes.io/selected-node有值
查看PersistentVolumeController内置的dynamic provisioner plugin(实际上没有)
找到则通过plugin
未找到设置pvc的volume.kubernetes.io/storage-provisioner注解为class的provisioner,等待外部provisioner处理(外部provisioner负责创建设置了claimref的pv)
其他
设置pvc pending
找到volume
执行pvc/pv的bound(VolumeBindingMode为Immediate才会找到volume)
如果pvc的Spec.VolumeName有值
找到volume且volume的claimref无值
检查pv是否处于非deleting状态,pv大小是否大于pvc的storage requests,pv的classname是否和pvc的classname一致,pv和pvc的VolumeMode是否一致,pvc和pv的AccessModes是否一致
都满足则进行pvc/pv bound
找到volume且volume的claimref等于pvc
进行pvc/pv bound
其他
设置pvc pending
pv
针对设置了claimref的pv(WaitForFirstConsumer)
调度器调度pod时挑选节点后设置pvc的volumaName以及设置pv的claimref(随后PersistentVolumeController设置bound)
针对未设置claimref的pv(immediate)
调度器为pvc挑选合适的pv后设置pvc的volumaName以及设置pv的claimref(随后PersistentVolumeController设置bound)
其他
pv pending