mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Merge pull request #65052 from dbdd4us/master
Automatic merge from submit-queue (batch tested with PRs 65052, 65594). 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>. fix update node condition **What this PR does / why we need it**: **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes #65051 /area cloudprovider /sig cluster-lifecycle **Special notes for your reviewer**: **Release note**: ```release-note NONE ```
This commit is contained in:
commit
5623efebea
@ -337,6 +337,21 @@ func (cnc *CloudNodeController) AddCloudNode(obj interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
err := clientretry.RetryOnConflict(UpdateNodeSpecBackoff, func() error {
|
err := clientretry.RetryOnConflict(UpdateNodeSpecBackoff, func() error {
|
||||||
|
// TODO(wlan0): Move this logic to the route controller using the node taint instead of condition
|
||||||
|
// Since there are node taints, do we still need this?
|
||||||
|
// This condition marks the node as unusable until routes are initialized in the cloud provider
|
||||||
|
if cnc.cloud.ProviderName() == "gce" {
|
||||||
|
if err := nodeutil.SetNodeCondition(cnc.kubeClient, types.NodeName(node.Name), v1.NodeCondition{
|
||||||
|
Type: v1.NodeNetworkUnavailable,
|
||||||
|
Status: v1.ConditionTrue,
|
||||||
|
Reason: "NoRouteCreated",
|
||||||
|
Message: "Node created without a route",
|
||||||
|
LastTransitionTime: metav1.Now(),
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
curNode, err := cnc.kubeClient.CoreV1().Nodes().Get(node.Name, metav1.GetOptions{})
|
curNode, err := cnc.kubeClient.CoreV1().Nodes().Get(node.Name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -374,19 +389,6 @@ func (cnc *CloudNodeController) AddCloudNode(obj interface{}) {
|
|||||||
curNode.ObjectMeta.Labels[kubeletapis.LabelInstanceType] = instanceType
|
curNode.ObjectMeta.Labels[kubeletapis.LabelInstanceType] = instanceType
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(wlan0): Move this logic to the route controller using the node taint instead of condition
|
|
||||||
// Since there are node taints, do we still need this?
|
|
||||||
// This condition marks the node as unusable until routes are initialized in the cloud provider
|
|
||||||
if cnc.cloud.ProviderName() == "gce" {
|
|
||||||
curNode.Status.Conditions = append(node.Status.Conditions, v1.NodeCondition{
|
|
||||||
Type: v1.NodeNetworkUnavailable,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
Reason: "NoRouteCreated",
|
|
||||||
Message: "Node created without a route",
|
|
||||||
LastTransitionTime: metav1.Now(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if zones, ok := cnc.cloud.Zones(); ok {
|
if zones, ok := cnc.cloud.Zones(); ok {
|
||||||
zone, err := getZoneByProviderIDOrName(zones, curNode)
|
zone, err := getZoneByProviderIDOrName(zones, curNode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -265,7 +265,7 @@ func (m *FakeNodeHandler) UpdateStatus(node *v1.Node) (*v1.Node, error) {
|
|||||||
// PatchStatus patches a status of a Node in the fake store.
|
// PatchStatus patches a status of a Node in the fake store.
|
||||||
func (m *FakeNodeHandler) PatchStatus(nodeName string, data []byte) (*v1.Node, error) {
|
func (m *FakeNodeHandler) PatchStatus(nodeName string, data []byte) (*v1.Node, error) {
|
||||||
m.RequestCount++
|
m.RequestCount++
|
||||||
return &v1.Node{}, nil
|
return m.Patch(nodeName, types.StrategicMergePatchType, data, "status")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch watches Nodes in a fake store.
|
// Watch watches Nodes in a fake store.
|
||||||
|
Loading…
Reference in New Issue
Block a user