mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 04:06:03 +00:00
Merge pull request #55764 from Random-Liu/wait-server-resources
Automatic merge from submit-queue (batch tested with PRs 55764, 55683, 55468, 54409, 55546). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Wait for server resources. For https://github.com/kubernetes/kubernetes/issues/55768. In e2e test for containerd, I sometimes see the following fail (e.g. https://k8s-gubernator.appspot.com/build/kubernetes-jenkins/logs/ci-cri-containerd-e2e-gci-gce/178): ``` Nov 15 02:40:31.291: Couldn't delete ns: "e2e-tests-container-probe-dcvlw": unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server could not find the requested resource (&discovery.ErrGroupDiscoveryFailed{Groups:map[schema.GroupVersion]error{schema.GroupVersion{Group:"metrics.k8s.io", Version:"v1beta1"}:(*errors.StatusError)(0xc420bfd170)}}) ``` Usually, only the first few tests fail with this error. The error seems to be returned at this line https://github.com/kubernetes/kubernetes/blob/master/test/e2e/framework/util.go#L1170. @cheftako @caesarxuchao Does this change make sense to you? Or should I wait for something else to become ready? /cc @kubernetes/sig-api-machinery-pr-reviews **Release note**: ```release-note none ```
This commit is contained in:
commit
b3a1867529
@ -1165,12 +1165,14 @@ func hasRemainingContent(c clientset.Interface, clientPool dynamic.ClientPool, n
|
||||
}
|
||||
|
||||
// find out what content is supported on the server
|
||||
resources, err := c.Discovery().ServerPreferredNamespacedResources()
|
||||
if err != nil && !isDynamicDiscoveryError(err) {
|
||||
// Since extension apiserver is not always available, e.g. metrics server sometimes goes down,
|
||||
// add retry here.
|
||||
resources, err := waitForServerPreferredNamespacedResources(c.Discovery(), 30*time.Second)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
groupVersionResources, err := discovery.GroupVersionResources(resources)
|
||||
if err != nil && !isDynamicDiscoveryError(err) {
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
@ -5100,3 +5102,25 @@ func DsFromManifest(url string) (*extensions.DaemonSet, error) {
|
||||
}
|
||||
return &controller, nil
|
||||
}
|
||||
|
||||
// waitForServerPreferredNamespacedResources waits until server preferred namespaced resources could be successfully discovered.
|
||||
// TODO: Fix https://github.com/kubernetes/kubernetes/issues/55768 and remove the following retry.
|
||||
func waitForServerPreferredNamespacedResources(d discovery.DiscoveryInterface, timeout time.Duration) ([]*metav1.APIResourceList, error) {
|
||||
Logf("Waiting up to %v for server preferred namespaced resources to be successfully discovered", timeout)
|
||||
var resources []*metav1.APIResourceList
|
||||
if err := wait.PollImmediate(Poll, timeout, func() (bool, error) {
|
||||
var err error
|
||||
resources, err = d.ServerPreferredNamespacedResources()
|
||||
if err == nil || isDynamicDiscoveryError(err) {
|
||||
return true, nil
|
||||
}
|
||||
if !discovery.IsGroupDiscoveryFailedError(err) {
|
||||
return false, err
|
||||
}
|
||||
Logf("Error discoverying server preferred namespaced resources: %v, retrying in %v.", err, Poll)
|
||||
return false, nil
|
||||
}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resources, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user