Open vthurimella opened 1 month ago
Hi @vthurimella see comment here https://github.com/knative/serving/issues/13690#issuecomment-1444055308. Could you elaborate on this one? Is it an AI use case?
My use case involves scientific workflows with AI components. We use Knative as a dynamic resource allocator across a shared cluster. Our Knative tasks generate files that must be written to the specific node where execution occurs. We have a robust system for file tracking and inter-node file transfer. Without hostPath support, we cannot efficiently manage data locality, which is crucial for our workflow performance (right now we have the task call a file service on the execution node that has a hostPath mounted). This feature would significantly help me integrate Knative into my application.
@dprotaso gentle ping, wdyth?
Thank you for considering this feature request! I understand that adding hostPath support might not be feasible for the main project due to various constraints or design considerations.
If it's not possible to integrate this into Knative directly, I would appreciate any guidance on how I could modify the code myself to add the hostPath functionality for my specific use case and deploy it in my own application. This way, I could get the functionality I need for my installation without affecting the broader project.
Any information on which parts of the codebase I should focus on, or any architectural considerations I should keep in mind, would be extremely helpful. This would allow me to tailor the solution to my applications needs while maintaining the core benefits of Knative in my setup.
I think It makes sense to allow hostPath
volumes, similar to support persistent volumes. This can be hidden behind a feature flag.
@vthurimella looks for kubernetes.podspec-persistent-volume-claim
in the source, starting from pkg/apis/config/features.go
and follow its usage trail. You should be able to implement hostPath
in a similar way.
@vthurimella, just out of curiosity, what is the reason for choosing Knative as resource allocator ? Which feature of Knative serving is the most important to you ?
@vthurimella You can have hostPath access via a pvc however there are limitations see discussion here, this has been asked multiple times before. @dprotaso what is your take on this one? Should we stay opinionated here or add it as a feature as discussed before?
I think it should be fine to add behind a feature flag.
/assign @skonto
@amarflybot hi, are you interested on working on https://github.com/knative/serving/pull/13693 again? If so I can assign it to you and re-open it.
Yes, I an work on this.
This is no longer required as we can achieve hostpath mount via pvc.
True but others have reported certain limitations on this, such as being restricted to a specific node.
/assign @amarflybot
@amarflybot a few comments about the PR you had: a) schema changes need to be behind a flag, make sure you add that in the schemapatch-config. b) hostpath needs certain validation as we want to catch errors early before we deploy real resources eg. path cannot be empty. K8s has this kind of validation here. c) we need more tests under k8s validation
@rhuss
@vthurimella looks for
kubernetes.podspec-persistent-volume-claim
in the source, starting frompkg/apis/config/features.go
and follow its usage trail. You should be able to implementhostPath
in a similar way.
Thank you for the tips!
@vthurimella, just out of curiosity, what is the reason for choosing Knative as resource allocator ? Which feature of Knative serving is the most important to you ?
The most important feature for my use case is autoscaling. The wide range of tunable parameters provides the flexibility I need to achieve good performance for my application.
@skonto @dprotaso Thank you two again for taking the time to considering this feature request!
@amarflybot hi, if you need any pointers here is what I had. Please ping me to review.
@amarflybot hi, gentle ping.
Give me sometime, was out for vacation. Will solve this asap.
@amarflybot hi, if you need any pointers here is what I had. Please ping me to review.
https://github.com/knative/serving/commit/56ef531961a44f79566f1ac1485e8fe6d5f242f0
These are some changes in validation I could find I had done before, if this helps.
In what area(s)?
/area API
Describe the feature
Adding support for the "hostPath" volume type in Knative Serving would allow users to mount directories from the host node's filesystem into their Knative service containers. This feature would enable access to local storage on the node, facilitating use cases such as accessing node-specific data or utilizing local caches, while maintaining the serverless benefits of Knative.