local-path-provisioner处理pvc和pv事件
v0.0.30
vendor/sigs.k8s.io/sig-storage-lib-external-provisioner/v10/controller/controller.go
syncClaim方法
1. 如果pvc上存在注解volume.kubernetes.io/storage-provisioner,那么需要供给卷。
should, err := ctrl.shouldProvision(ctx, claim)
2. 在指定节点上创建pod,完成创建pv本地存储,创建k8s pv资源。
status, err := ctrl.provisionClaimOperation(ctx, claim)
syncVolume方法
1. 如果pv是自己供给的,那么需要处理。
ctrl.isProvisionerForVolume(ctx, volume)
2. 增加或者删除pv上的finalizer。
volume, err := ctrl.handleProtectionFinalizer(ctx, volume)
3. 如果pv状态不是Released,或者策略不是Delete,那么不需要删除pv。
ctrl.shouldDelete(ctx, volume)
4. 在指定节点上创建pod,完成删除pv本地存储,删除k8s pv资源。
err = ctrl.deleteVolumeOperation(ctx, volume)
浙公网安备 33010602011771号