diff --git a/pkg/kubelet/kubelet_node_status.go b/pkg/kubelet/kubelet_node_status.go index bdcb5588f09..2c9a850257e 100644 --- a/pkg/kubelet/kubelet_node_status.go +++ b/pkg/kubelet/kubelet_node_status.go @@ -107,7 +107,7 @@ func (kl *Kubelet) tryRegisterWithApiServer(node *api.Node) bool { // annotation. requiresUpdate := kl.reconcileCMADAnnotationWithExistingNode(node, existingNode) if requiresUpdate { - if _, err := kl.kubeClient.Core().Nodes().Update(existingNode); err != nil { + if _, err := kl.kubeClient.Core().Nodes().UpdateStatus(existingNode); err != nil { glog.Errorf("Unable to reconcile node %q with API server: error updating node: %v", kl.nodeName, err) return false } diff --git a/pkg/kubelet/kubelet_node_status_test.go b/pkg/kubelet/kubelet_node_status_test.go index 3b2d1d6cac5..3287cb6857a 100644 --- a/pkg/kubelet/kubelet_node_status_test.go +++ b/pkg/kubelet/kubelet_node_status_test.go @@ -1028,8 +1028,11 @@ func TestTryRegisterWithApiServer(t *testing.T) { // Return an existing (matching) node on get. return true, tc.existingNode, tc.getError }) - kubeClient.AddReactor("update", "nodes", func(action core.Action) (bool, runtime.Object, error) { - return true, nil, tc.updateError + kubeClient.AddReactor("update", "*", func(action core.Action) (bool, runtime.Object, error) { + if action.GetResource().Resource == "nodes" && action.GetSubresource() == "status" { + return true, nil, tc.updateError + } + return true, nil, fmt.Errorf("no reaction implemented for %s", action) }) kubeClient.AddReactor("delete", "nodes", func(action core.Action) (bool, runtime.Object, error) { return true, nil, tc.deleteError