Skip to content

Commit 698c8b0

Browse files
authored
Merge pull request #820 from MartinForReal/master
Add retry for patch node requests and replace deprecated poll function
2 parents b3653a0 + d04bb3a commit 698c8b0

File tree

5 files changed

+122
-3
lines changed

5 files changed

+122
-3
lines changed

pkg/exporters/k8sexporter/k8s_exporter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@ func (ke *k8sExporter) startHTTPReporting(npdo *options.NodeProblemDetectorOptio
105105
}
106106

107107
func waitForAPIServerReadyWithTimeout(ctx context.Context, c problemclient.Client, npdo *options.NodeProblemDetectorOptions) error {
108-
return wait.PollImmediate(npdo.APIServerWaitInterval, npdo.APIServerWaitTimeout, func() (done bool, err error) {
108+
return wait.PollUntilContextTimeout(ctx, npdo.APIServerWaitInterval, npdo.APIServerWaitTimeout, true, func(ctx context.Context) (done bool, err error) {
109109
// If NPD can get the node object from kube-apiserver, the server is
110110
// ready and the RBAC permission is set correctly.
111111
if _, err := c.GetNode(ctx); err != nil {
112112
klog.Errorf("Can't get node object: %v", err)
113-
return false, nil
113+
return false, err
114114
}
115115
return true, nil
116116
})

pkg/exporters/k8sexporter/problemclient/problem_client.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
clientset "k8s.io/client-go/kubernetes"
3232
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
3333
"k8s.io/client-go/tools/record"
34+
"k8s.io/client-go/util/retry"
3435
"k8s.io/klog/v2"
3536
"k8s.io/utils/clock"
3637

@@ -107,7 +108,15 @@ func (c *nodeProblemClient) SetConditions(ctx context.Context, newConditions []v
107108
if err != nil {
108109
return err
109110
}
110-
return c.client.RESTClient().Patch(types.StrategicMergePatchType).Resource("nodes").Name(c.nodeName).SubResource("status").Body(patch).Do(ctx).Error()
111+
return retry.OnError(retry.DefaultRetry,
112+
func(error) bool {
113+
return true
114+
},
115+
func() error {
116+
_, err := c.client.Nodes().PatchStatus(ctx, c.nodeName, patch)
117+
return err
118+
},
119+
)
111120
}
112121

113122
func (c *nodeProblemClient) Eventf(eventType, source, reason, messageFmt string, args ...interface{}) {

vendor/k8s.io/client-go/util/retry/OWNERS

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/k8s.io/client-go/util/retry/util.go

Lines changed: 105 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,7 @@ k8s.io/client-go/util/connrotation
762762
k8s.io/client-go/util/flowcontrol
763763
k8s.io/client-go/util/homedir
764764
k8s.io/client-go/util/keyutil
765+
k8s.io/client-go/util/retry
765766
k8s.io/client-go/util/workqueue
766767
# k8s.io/klog/v2 v2.100.1
767768
## explicit; go 1.13

0 commit comments

Comments
 (0)