mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-13 05:46:16 +00:00
Trigger re-sync on any change to providerID
This commit is contained in:
parent
3c45b61b64
commit
d257d5dfdc
@ -683,8 +683,8 @@ func shouldSyncUpdatedNode(oldNode, newNode *v1.Node) bool {
|
|||||||
if respectsPredicates(oldNode, nodeIncludedPredicate) != respectsPredicates(newNode, nodeIncludedPredicate) {
|
if respectsPredicates(oldNode, nodeIncludedPredicate) != respectsPredicates(newNode, nodeIncludedPredicate) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// For the same reason as above, also check for changes to the providerID
|
// For the same reason as above, also check for any change to the providerID
|
||||||
if respectsPredicates(oldNode, nodeHasProviderIDPredicate) != respectsPredicates(newNode, nodeHasProviderIDPredicate) {
|
if oldNode.Spec.ProviderID != newNode.Spec.ProviderID {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(features.StableLoadBalancerNodeSet) {
|
if !utilfeature.DefaultFeatureGate.Enabled(features.StableLoadBalancerNodeSet) {
|
||||||
@ -975,13 +975,6 @@ func getNodePredicatesForService(service *v1.Service) []NodeConditionPredicate {
|
|||||||
return allNodePredicates
|
return allNodePredicates
|
||||||
}
|
}
|
||||||
|
|
||||||
// This predicate just validates if the providerID has been set and triggers a
|
|
||||||
// node sync. It is _not_ used when determining which nodes to use when
|
|
||||||
// configuring the load balancer's backend pool.
|
|
||||||
func nodeHasProviderIDPredicate(node *v1.Node) bool {
|
|
||||||
return node.Spec.ProviderID != ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// We consider the node for load balancing only when the node is not labelled for exclusion.
|
// We consider the node for load balancing only when the node is not labelled for exclusion.
|
||||||
func nodeIncludedPredicate(node *v1.Node) bool {
|
func nodeIncludedPredicate(node *v1.Node) bool {
|
||||||
_, hasExcludeBalancerLabel := node.Labels[v1.LabelNodeExcludeBalancers]
|
_, hasExcludeBalancerLabel := node.Labels[v1.LabelNodeExcludeBalancers]
|
||||||
|
@ -1957,9 +1957,9 @@ func tweakDeleted() nodeTweak {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func tweakUnsetProviderID() nodeTweak {
|
func tweakProviderID(id string) nodeTweak {
|
||||||
return func(n *v1.Node) {
|
return func(n *v1.Node) {
|
||||||
n.Spec.ProviderID = ""
|
n.Spec.ProviderID = id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2122,15 +2122,37 @@ func Test_shouldSyncUpdatedNode_individualPredicates(t *testing.T) {
|
|||||||
stableNodeSetEnabled: true,
|
stableNodeSetEnabled: true,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID set F -> T",
|
name: "providerID set F -> T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(),
|
newNode: makeNode(),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID set F -> T",
|
name: "providerID set F -> T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(),
|
newNode: makeNode(),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
stableNodeSetEnabled: true,
|
stableNodeSetEnabled: true,
|
||||||
|
}, {
|
||||||
|
name: "providerID set T-> F",
|
||||||
|
oldNode: makeNode(),
|
||||||
|
newNode: makeNode(tweakProviderID("")),
|
||||||
|
shouldSync: true,
|
||||||
|
}, {
|
||||||
|
name: "providerID set T-> F",
|
||||||
|
oldNode: makeNode(),
|
||||||
|
newNode: makeNode(tweakProviderID("")),
|
||||||
|
shouldSync: true,
|
||||||
|
stableNodeSetEnabled: true,
|
||||||
|
}, {
|
||||||
|
name: "providerID change",
|
||||||
|
oldNode: makeNode(),
|
||||||
|
newNode: makeNode(tweakProviderID(providerID + "-2")),
|
||||||
|
shouldSync: true,
|
||||||
|
}, {
|
||||||
|
name: "providerID change",
|
||||||
|
oldNode: makeNode(),
|
||||||
|
newNode: makeNode(tweakProviderID(providerID + "-2")),
|
||||||
|
shouldSync: true,
|
||||||
|
stableNodeSetEnabled: true,
|
||||||
}}
|
}}
|
||||||
for _, testcase := range testcases {
|
for _, testcase := range testcases {
|
||||||
t.Run(fmt.Sprintf("%s - StableLoadBalancerNodeSet: %v", testcase.name, testcase.stableNodeSetEnabled), func(t *testing.T) {
|
t.Run(fmt.Sprintf("%s - StableLoadBalancerNodeSet: %v", testcase.name, testcase.stableNodeSetEnabled), func(t *testing.T) {
|
||||||
@ -2168,14 +2190,20 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "tainted T, providerID set F->T",
|
name: "tainted T, providerID set F->T",
|
||||||
oldNode: makeNode(tweakAddTaint(ToBeDeletedTaint), tweakUnsetProviderID()),
|
oldNode: makeNode(tweakAddTaint(ToBeDeletedTaint), tweakProviderID("")),
|
||||||
newNode: makeNode(tweakAddTaint(ToBeDeletedTaint)),
|
newNode: makeNode(tweakAddTaint(ToBeDeletedTaint)),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "tainted T, providerID set T->F",
|
name: "tainted T, providerID set T->F",
|
||||||
oldNode: makeNode(tweakAddTaint(ToBeDeletedTaint)),
|
oldNode: makeNode(tweakAddTaint(ToBeDeletedTaint)),
|
||||||
newNode: makeNode(tweakAddTaint(ToBeDeletedTaint), tweakUnsetProviderID()),
|
newNode: makeNode(tweakAddTaint(ToBeDeletedTaint), tweakProviderID("")),
|
||||||
|
shouldSync: true,
|
||||||
|
fgEnabled: fgEnabled,
|
||||||
|
}, {
|
||||||
|
name: "tainted T, providerID change",
|
||||||
|
oldNode: makeNode(tweakAddTaint(ToBeDeletedTaint)),
|
||||||
|
newNode: makeNode(tweakAddTaint(ToBeDeletedTaint), tweakProviderID(providerID+"-2")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
@ -2216,14 +2244,20 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "excluded T, providerID set F->T",
|
name: "excluded T, providerID set F->T",
|
||||||
oldNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, ""), tweakUnsetProviderID()),
|
oldNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, ""), tweakProviderID("")),
|
||||||
newNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
newNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "excluded T, providerID set T->F",
|
name: "excluded T, providerID set T->F",
|
||||||
oldNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
oldNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
||||||
newNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, ""), tweakUnsetProviderID()),
|
newNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, ""), tweakProviderID("")),
|
||||||
|
shouldSync: true,
|
||||||
|
fgEnabled: fgEnabled,
|
||||||
|
}, {
|
||||||
|
name: "excluded T, providerID change",
|
||||||
|
oldNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
||||||
|
newNode: makeNode(tweakSetLabel(v1.LabelNodeExcludeBalancers, ""), tweakProviderID(providerID+"-2")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
@ -2252,32 +2286,38 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "ready F, providerID set F->T",
|
name: "ready F, providerID set F->T",
|
||||||
oldNode: makeNode(tweakSetReady(false), tweakUnsetProviderID()),
|
oldNode: makeNode(tweakSetReady(false), tweakProviderID("")),
|
||||||
newNode: makeNode(tweakSetReady(false)),
|
newNode: makeNode(tweakSetReady(false)),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "ready F, providerID set T->F",
|
name: "ready F, providerID set T->F",
|
||||||
oldNode: makeNode(tweakSetReady(false)),
|
oldNode: makeNode(tweakSetReady(false)),
|
||||||
newNode: makeNode(tweakSetReady(false), tweakUnsetProviderID()),
|
newNode: makeNode(tweakSetReady(false), tweakProviderID("")),
|
||||||
|
shouldSync: true,
|
||||||
|
fgEnabled: fgEnabled,
|
||||||
|
}, {
|
||||||
|
name: "ready F, providerID change",
|
||||||
|
oldNode: makeNode(tweakSetReady(false)),
|
||||||
|
newNode: makeNode(tweakSetReady(false), tweakProviderID(providerID+"-2")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID unset, excluded F->T",
|
name: "providerID unset, excluded F->T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(tweakUnsetProviderID(), tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
newNode: makeNode(tweakProviderID(""), tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID unset, excluded T->F",
|
name: "providerID unset, excluded T->F",
|
||||||
oldNode: makeNode(tweakUnsetProviderID(), tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
oldNode: makeNode(tweakProviderID(""), tweakSetLabel(v1.LabelNodeExcludeBalancers, "")),
|
||||||
newNode: makeNode(tweakUnsetProviderID()),
|
newNode: makeNode(tweakProviderID("")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID unset, ready T->F",
|
name: "providerID unset, ready T->F",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(tweakUnsetProviderID(), tweakSetReady(true)),
|
newNode: makeNode(tweakProviderID(""), tweakSetReady(true)),
|
||||||
shouldSync: false,
|
shouldSync: false,
|
||||||
fgEnabled: fgEnabled,
|
fgEnabled: fgEnabled,
|
||||||
},
|
},
|
||||||
@ -2286,40 +2326,40 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
testcases = append(testcases, []testCase{
|
testcases = append(testcases, []testCase{
|
||||||
{
|
{
|
||||||
name: "providerID unset, ready F->T",
|
name: "providerID unset, ready F->T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(tweakUnsetProviderID(), tweakSetReady(false)),
|
newNode: makeNode(tweakProviderID(""), tweakSetReady(false)),
|
||||||
shouldSync: false,
|
shouldSync: false,
|
||||||
fgEnabled: true,
|
fgEnabled: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "providerID unset, ready F->T",
|
name: "providerID unset, ready F->T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(tweakUnsetProviderID(), tweakSetReady(false)),
|
newNode: makeNode(tweakProviderID(""), tweakSetReady(false)),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: false,
|
fgEnabled: false,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID unset, tainted T->F",
|
name: "providerID unset, tainted T->F",
|
||||||
oldNode: makeNode(tweakUnsetProviderID(), tweakAddTaint(ToBeDeletedTaint)),
|
oldNode: makeNode(tweakProviderID(""), tweakAddTaint(ToBeDeletedTaint)),
|
||||||
newNode: makeNode(tweakUnsetProviderID()),
|
newNode: makeNode(tweakProviderID("")),
|
||||||
shouldSync: false,
|
shouldSync: false,
|
||||||
fgEnabled: true,
|
fgEnabled: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "providerID unset, tainted T->F",
|
name: "providerID unset, tainted T->F",
|
||||||
oldNode: makeNode(tweakUnsetProviderID(), tweakAddTaint(ToBeDeletedTaint)),
|
oldNode: makeNode(tweakProviderID(""), tweakAddTaint(ToBeDeletedTaint)),
|
||||||
newNode: makeNode(tweakUnsetProviderID()),
|
newNode: makeNode(tweakProviderID("")),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: false,
|
fgEnabled: false,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID unset, tainted F->T",
|
name: "providerID unset, tainted F->T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(tweakUnsetProviderID(), tweakAddTaint(ToBeDeletedTaint)),
|
newNode: makeNode(tweakProviderID(""), tweakAddTaint(ToBeDeletedTaint)),
|
||||||
shouldSync: false,
|
shouldSync: false,
|
||||||
fgEnabled: true,
|
fgEnabled: true,
|
||||||
}, {
|
}, {
|
||||||
name: "providerID unset, tainted F->T",
|
name: "providerID unset, tainted F->T",
|
||||||
oldNode: makeNode(tweakUnsetProviderID()),
|
oldNode: makeNode(tweakProviderID("")),
|
||||||
newNode: makeNode(tweakUnsetProviderID(), tweakAddTaint(ToBeDeletedTaint)),
|
newNode: makeNode(tweakProviderID(""), tweakAddTaint(ToBeDeletedTaint)),
|
||||||
shouldSync: true,
|
shouldSync: true,
|
||||||
fgEnabled: false,
|
fgEnabled: false,
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user