Merge pull request #114176 from QuantumEnergyE/kubeadm_retry_patch_node

Retry patch when then service is unavailable or timeout.
This commit is contained in:
Kubernetes Prow Robot 2022-12-10 06:05:26 -08:00 committed by GitHub
commit 9e3e47f56a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 1 deletions

View File

@ -303,7 +303,7 @@ func PatchNodeOnce(client clientset.Interface, nodeName string, patchFn func(*v1
if _, err := client.CoreV1().Nodes().Patch(context.TODO(), n.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}); err != nil {
*lastError = errors.Wrapf(err, "error patching node %q through apiserver", n.Name)
if apierrors.IsTimeout(err) || apierrors.IsConflict(err) {
if apierrors.IsTimeout(err) || apierrors.IsConflict(err) || apierrors.IsServerTimeout(err) || apierrors.IsServiceUnavailable(err) {
return false, nil
}
return false, *lastError

View File

@ -91,6 +91,30 @@ func TestPatchNode(t *testing.T) {
success: false,
fakeError: apierrors.NewConflict(schema.GroupResource{}, "fake conflict", nil),
},
{
name: "patch node when there is a server timeout",
lookupName: "testnode",
node: v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "testnode",
Labels: map[string]string{v1.LabelHostname: ""},
},
},
success: false,
fakeError: apierrors.NewServerTimeout(schema.GroupResource{}, "fake server timeout", 1),
},
{
name: "patch node when the service is unavailable",
lookupName: "testnode",
node: v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "testnode",
Labels: map[string]string{v1.LabelHostname: ""},
},
},
success: false,
fakeError: apierrors.NewServiceUnavailable("fake service unavailable"),
},
}
for _, tc := range testcases {