使用SetLabels()API调用更新节点标签时出错

时间:2018-06-20 05:38:28

标签: go kubernetes

我正在使用Kubernetes 1.10.2版本并设置1个主节点3个节点的集群。

使用GOLang api,我具有以下功能来标记节点。

在执行此代码时,几次出现以下错误,

  

无法更新标签:无法在节点“ node2”上执行操作:对象已被修改;请将您的更改应用于最新   版本,然后重试

重试几次相同的代码后,它可以正常工作。如何克服这个错误?

节点标签功能:

func labelNodes(nodeLabelName string, kubeClient kubernetes.Interface) error {
    k8sNodeList, err := kubeClient.CoreV1().Nodes().List(metav1.ListOptions{})
    if err != nil {
        return errors.New("Failed to get nodes " + err.Error())
    }
    for _, k8sNode := range k8sNodeList.Items {
        nodeLabels[nodeLabelName] = "myNodeLabel"
        k8sNode.SetLabels(nodeLabels)
        if _, err = kubeClient.CoreV1().Nodes().Update(&k8sNode); err != nil {  
            return errors.New("Failed to update label " + err.Error())
        }
    }
    return nil
}

0 个答案:

没有答案