Change:
The selfsubjectreviews resource MUST exist in the /apis/authentication.k8s.io/v1beta1 discovery document. The selfsubjectreviews resource MUST support create. */ <del> ginkgo.It("should support SelfSubjectReview API operations", func(ctx context.Context) { ginkgo.DescribeTable( "testing SSR in different API groups", func(apiVersion, gv string) { // Discovery ginkgo.By("getting /apis") { discoveryGroups, err := f.ClientSet.Discovery().ServerGroups() framework.ExpectNoError(err) found := false for _, group := range discoveryGroups.Groups { if group.Name == authenticationv1alpha1.GroupName { for _, version := range group.Versions { if version.Version == apiVersion { found = true break } </del> <ins> ginkgo.DescribeTable( "testing SSR in different API groups", func(ctx context.Context, apiVersion, gv string) { // Discovery ginkgo.By("getting /apis") { discoveryGroups, err := f.ClientSet.Discovery().ServerGroups() framework.ExpectNoError(err) found := false for _, group := range discoveryGroups.Groups { if group.Name == authenticationv1alpha1.GroupName { for _, version := range group.Versions { if version.Version == apiVersion { found = true break </ins> } } } <del> if !found { ginkgo.Skip(fmt.Sprintf("expected SelfSubjectReview API group/version, got %#v", discoveryGroups.Groups)) } </del> } <ins> if !found { ginkgo.Skip(fmt.Sprintf("expected SelfSubjectReview API group/version, got %#v", discoveryGroups.Groups)) } } </ins> <del> ginkgo.By("getting /apis/authentication.k8s.io") { group := &metav1.APIGroup{} err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/authentication.k8s.io").Do(ctx).Into(group) framework.ExpectNoError(err) found := false for _, version := range group.Versions { if version.Version == apiVersion { found = true break } } if !found { ginkgo.Skip(fmt.Sprintf("expected SelfSubjectReview API version, got %#v", group.Versions)) </del> <ins> ginkgo.By("getting /apis/authentication.k8s.io") { group := &metav1.APIGroup{} err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/authentication.k8s.io").Do(ctx).Into(group) framework.ExpectNoError(err) found := false for _, version := range group.Versions { if version.Version == apiVersion { found = true break </ins> } } <ins> if !found { ginkgo.Skip(fmt.Sprintf("expected SelfSubjectReview API version, got %#v", group.Versions)) } } </ins> <del> ginkgo.By("getting /apis/authentication.k8s.io/" + apiVersion) { resources, err := f.ClientSet.Discovery().ServerResourcesForGroupVersion(gv) framework.ExpectNoError(err) found := false for _, resource := range resources.APIResources { switch resource.Name { case "selfsubjectreviews": found = true } } if !found { ginkgo.Skip(fmt.Sprintf("expected selfsubjectreviews, got %#v", resources.APIResources)) </del> <ins> ginkgo.By("getting /apis/authentication.k8s.io/" + apiVersion) { resources, err := f.ClientSet.Discovery().ServerResourcesForGroupVersion(gv) framework.ExpectNoError(err) found := false for _, resource := range resources.APIResources { switch resource.Name { case "selfsubjectreviews": found = true </ins> } } <del> }, ginkgo.Entry("authentication/v1alpha1", "v1alpha1", authenticationv1alpha1.SchemeGroupVersion.String()), ginkgo.Entry("authentication/v1beta1", "v1beta1", authenticationv1beta1.SchemeGroupVersion.String()), ) </del> <ins> if !found { ginkgo.Skip(fmt.Sprintf("expected selfsubjectreviews, got %#v", resources.APIResources)) } } }, ginkgo.Entry("authentication/v1alpha1", "v1alpha1", authenticationv1alpha1.SchemeGroupVersion.String()), ginkgo.Entry("authentication/v1beta1", "v1beta1", authenticationv1beta1.SchemeGroupVersion.String()), ) ginkgo.It("should support SelfSubjectReview API operations", func(ctx context.Context) { </ins> // Check creating ginkgo.By("creating SSR authentication/v1alpha1") {

Discussion:
Seen in pull-kubernetes-e2e-gce-cos-alpha-features Specific job failure
This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the label and provide further guidance. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
from the error message I don't know if it refers to the sig-storage error or to the sig-auth one
/sig storage
/kind failing-test
/assign From : ... I am not sure if it's related:
is the culprit. cannot be used inside a . This only gets caught when the test actually runs, otherwise Ginkgo never sees the incorrect .
I don’t understand why sometimes it can get the pv by namebut sometimes it failed
but then is a sig-auth test , not storage , sorry /sig auth this seems that was recently in
/remove sig-storage
/assign /priority important-soon
/unassign
is still failed. seems not fixing the whole problem. /reopen feel free to close if the ci is green.
Reopened this issue. <detailsIn response to : is still failed. /reopen feel free to close if the ci is green. Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
the failure now looks like it is just a sig storage issue:
cc
/assign looks like the new test is still an issue
I think this line is the problem: When the test creates the object, it may take time for the PV to be provisioned and to be bound to the PVC. So you should do another before this call so you can get the latest PVC object with the bound PV.
I opened to get PVC again before using .
Only do PersistentVolumeClaims.Get() is not enough, whether we need to wait for sometimes to wait it bound? because sometimes the testcase is successful and sometime is failed.
If the Pod was able to run, then the PVC has to be bound.
so I can't understand why sometimes the testcase is successful and sometimes is failed.

By default, the DelayBinding is false, it will wait for PVC bound during creation. This is weird.
It waits for the claim to be bound, but the test case still needs to refresh its pvc object.
Because of the refresh is async, so after the pvc was bound, we need to get the pvc again, isn't it?