New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reference the k8s provisioner instead of the outdated in-tree provisioner #2522
Conversation
43fb038
to
6a4b19e
Compare
…oner Signed-off-by: travisn <tnielsen@redhat.com>
6a4b19e
to
c9d3d1b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this Travis! It'll be great to get the benefits of the stability efforts on the provisioner from the k8s storage community.
My biggest concerns would be around compatibility:
- were you able to test the scenario where we have existing PVs/PVCs created and then upgrade to a Rook build with this newer provisioner? do the existing PVs/PVCs remain OK?
- were you able to diff the code from the updated provisioner vs the old outdated provisioner to see what functional changes were made? maybe look at the commits made in the new provisioner repository to see what changes have been made for clues about anything that may not be compatible? (there could be some commits in the old tree also that were made before the code was moved to its own repo)
@@ -66,6 +66,7 @@ rules: | |||
# PVs and PVCs are managed by the Rook provisioner | |||
- persistentvolumes | |||
- persistentvolumeclaims | |||
- endpoints |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is endpoints
something that the updated external provisioner code is using?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was required with the change to the v12 client
@travisn This is true.
Its happening and PR is already out kubernetes-retired/external-storage#1106 :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jbw976 the upgrade integration test does succeed for previously provisioned mounts and then it continues to work after the upgrade. I don't see the upgrade as being an issue so far, but I'll dig into the diff and see what else might impact us. So far it's been much more stable in testing though than what we had.
@@ -66,6 +66,7 @@ rules: | |||
# PVs and PVCs are managed by the Rook provisioner | |||
- persistentvolumes | |||
- persistentvolumeclaims | |||
- endpoints |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was required with the change to the v12 client
@humblec Is the klog change also in progress for https://github.com/kubernetes-sigs/sig-storage-lib-external-provisioner? I see the change has merged in kubernetes-retired/external-storage#1106, though rook is not referencing that one. |
@jbw976 After looking through the external provision library here are my observations:
|
@jbw976 i also tested that the failover and fencing is working with these changes. When a pod is failed over to another node, I see messages such as the following in the agent log until the old pod releases the lock:
After the old pod releases the lock, the new pod comes up fine. |
@travisn RE: those |
@jbw976 No differences that I could see. I tried a couple scenarios where it took many minutes for the old pod to terminate, or where it only took a matter of seconds. Both times, I saw the message |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thank you for your thoroughness to vet this change with respect to verifying there are no breaking changes. great work @travisn! 🎉
Signed-off-by: travisn tnielsen@redhat.com
Description of your changes:
The k8s external provisioner had been committed in-tree with rook due to dependency issues. This provisioner is outdated and causing issues such as hanging PVC requests. Now we are referencing the external provisioner code and there is no more need to copy the code in-tree. This change does allow us now to create many PVCs without hitting a hang.
The Rook
go
dependencies now include K8s v12.0 and the external provisioner v1.0. These were the most recent tags I could find to work. The K8s v13.0 tag and the provisioner v2.1 tags did compile. However, at runtime there was an issue with conflicting flags inglog
. It looks like glog has been removed from all k8s code in favor of the packagek8s.io/klog
. However, the external provisioner has not yet been updated to shed glog. We will need that update before we can get on the latest version.Which issue is resolved by this Pull Request:
Resolves #2487 #2007
Checklist:
make codegen
) has been run to update object specifications, if necessary.