Skip to content

Add volume health proposal#604

Open
gnufied wants to merge 11 commits into
container-storage-interface:masterfrom
gnufied:implement-volume-health
Open

Add volume health proposal#604
gnufied wants to merge 11 commits into
container-storage-interface:masterfrom
gnufied:implement-volume-health

Conversation

@gnufied

@gnufied gnufied commented May 21, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@gnufied gnufied changed the title {WIP} Add volume health proposal Add volume health proposal May 26, 2026
@gnufied gnufied force-pushed the implement-volume-health branch 2 times, most recently from ee77999 to 8789044 Compare May 28, 2026 20:25
@gnufied gnufied force-pushed the implement-volume-health branch from 8789044 to 456214c Compare May 28, 2026 21:06
Comment thread spec.md Outdated
Comment thread spec.md
message NodeGetStorageHealthResponse {
option (alpha_message) = true;

message StorageBackendHealth {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually something that could be provided by the controller too. Network storage clusters (like Ceph) can return their health with sufficient parameters and secrets. If the backend storage is unhealthy, there probably is little reason to attempt to use it for new volumes, or expect (fully) functional usage by the nodeplugin.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking about this use case, but where would we report it? In CSIDriver object? I do not think, CSI driver object was designed for such use case, but idea is sound in theory.

I am intentionally keeping some of the health reporting as future enhancement, so as we can ship something rather than being bogged down by designing everything upfront. I am adding a section in kubernetes/enhancements#6138 to keep track of future enhancements. I will update

@nixpanic

nixpanic commented Jun 4, 2026 via email

Copy link
Copy Markdown
Contributor

@nixpanic nixpanic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current proposal looks good to me, and it should be workable with the CSI-drivers for Ceph.

Comment thread spec.md Outdated
Comment thread spec.md Outdated
Comment thread spec.md Outdated
Comment thread spec.md
Comment thread spec.md
// The storage backend is operating in a degraded
// state (e.g. reduced path count, high latency).
// Volumes using this backend may experience reduced performance.
STORAGE_DEGRADED = 2;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we reuse the enum we defined for VolumeHealth here ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bswartz I have been thinking long and hard about this and IMO keeping these two enum separate makes most sense in the long run. If we chose one enum, we will have to overload the semantics, the expected CO behaviour for node vs single volume could be different.

Comment thread spec.md
// Secrets required by the plugin to complete the request.
// This field is OPTIONAL. Refer to the `Secrets Requirements`
// section on how to use this field.
map<string, string> secrets = 1 [(csi_secret) = true];

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where will this be coming from? Where will this be stored in k8s?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We discussed this some more in CSI implementation meeting and we are keeping these secret fields, but in current iteration of k8s implementation, secrets will be unsupported for volume health. The exact details for where the secret for these health RPCs will be coming in k8s will be decided later.

Comment thread spec.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants