Description
Volume Health KEP is merged in Kubernetes. We need to have CSI changes to provide volume health check leveraging existing RPCs and adding new ones.
-
Add new GetVolume controller RPC
External monitoring controller calls a new GetVolume RPC to check health condition of a particular volume instead of calling ListVolumes with a volume_id filter. Some CSI drivers chose not to implement ListVolumes as it is an expensive operation. Therefore it is better to introduce a new RPC GetVolume which has a new capability. -
Extend the existing NodeGetVolumeStats RPC
External node agent calls NodeGetVolumeStats to check mount condition and other health condition.
Two new controller capabilities are added. If a CSI driver supports GET_VOLUME capability, it MUST support calling GetVolume to provide general volume information in GetVolumeResponse. If a driver supports GET_VOLUME_HEALTH, it MUST provide additional health information in GetVolumeResponse.
A new node capability is added. If CSI driver supports the GET_VOLUME_STATS_HEALTH capability, it MUST provide health information in NodeGetVolumeStats.
For details of CSI spec changes, see the following:
https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/20190530-pv-health-monitor.md#csi-changes