mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
[CCM - service controller] Remove schedulability predicate for LB set
This commit is contained in:
parent
785f2fb227
commit
59e90f4ee0
@ -984,13 +984,11 @@ type NodeConditionPredicate func(node *v1.Node) bool
|
|||||||
var (
|
var (
|
||||||
allNodePredicates []NodeConditionPredicate = []NodeConditionPredicate{
|
allNodePredicates []NodeConditionPredicate = []NodeConditionPredicate{
|
||||||
nodeIncludedPredicate,
|
nodeIncludedPredicate,
|
||||||
nodeSchedulablePredicate,
|
|
||||||
nodeUnTaintedPredicate,
|
nodeUnTaintedPredicate,
|
||||||
nodeReadyPredicate,
|
nodeReadyPredicate,
|
||||||
}
|
}
|
||||||
etpLocalNodePredicates []NodeConditionPredicate = []NodeConditionPredicate{
|
etpLocalNodePredicates []NodeConditionPredicate = []NodeConditionPredicate{
|
||||||
nodeIncludedPredicate,
|
nodeIncludedPredicate,
|
||||||
nodeSchedulablePredicate,
|
|
||||||
nodeUnTaintedPredicate,
|
nodeUnTaintedPredicate,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -1008,11 +1006,6 @@ func nodeIncludedPredicate(node *v1.Node) bool {
|
|||||||
return !hasExcludeBalancerLabel
|
return !hasExcludeBalancerLabel
|
||||||
}
|
}
|
||||||
|
|
||||||
// We consider the node for load balancing only when the node is schedulable.
|
|
||||||
func nodeSchedulablePredicate(node *v1.Node) bool {
|
|
||||||
return !node.Spec.Unschedulable
|
|
||||||
}
|
|
||||||
|
|
||||||
// We consider the node for load balancing only when its not tainted for deletion by the cluster autoscaler.
|
// We consider the node for load balancing only when its not tainted for deletion by the cluster autoscaler.
|
||||||
func nodeUnTaintedPredicate(node *v1.Node) bool {
|
func nodeUnTaintedPredicate(node *v1.Node) bool {
|
||||||
for _, taint := range node.Spec.Taints {
|
for _, taint := range node.Spec.Taints {
|
||||||
|
@ -580,7 +580,6 @@ func TestNodeChangesForExternalTrafficPolicyLocalServices(t *testing.T) {
|
|||||||
node2 := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
node2 := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
||||||
node2NotReady := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}}}}
|
node2NotReady := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}}}}
|
||||||
node2Tainted := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Spec: v1.NodeSpec{Taints: []v1.Taint{{Key: ToBeDeletedTaint}}}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}}}}
|
node2Tainted := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Spec: v1.NodeSpec{Taints: []v1.Taint{{Key: ToBeDeletedTaint}}}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}}}}
|
||||||
node2Unschedulable := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Spec: v1.NodeSpec{Unschedulable: true}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
|
||||||
node2SpuriousChange := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Status: v1.NodeStatus{Phase: v1.NodeTerminated, Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
node2SpuriousChange := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}, Status: v1.NodeStatus{Phase: v1.NodeTerminated, Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
||||||
node2Exclude := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1", Labels: map[string]string{v1.LabelNodeExcludeBalancers: ""}}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
node2Exclude := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1", Labels: map[string]string{v1.LabelNodeExcludeBalancers: ""}}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
||||||
node3 := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node73"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
node3 := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node73"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}
|
||||||
@ -670,20 +669,6 @@ func TestNodeChangesForExternalTrafficPolicyLocalServices(t *testing.T) {
|
|||||||
{Service: service3, Hosts: []*v1.Node{node1, node3}},
|
{Service: service3, Hosts: []*v1.Node{node1, node3}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
desc: "1 node goes unschedulable",
|
|
||||||
initialState: []*v1.Node{node1, node2, node3},
|
|
||||||
stateChanges: []stateChanges{
|
|
||||||
{
|
|
||||||
nodes: []*v1.Node{node1, node2Unschedulable, node3},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
expectedUpdateCalls: []fakecloud.UpdateBalancerCall{
|
|
||||||
{Service: etpLocalservice1, Hosts: []*v1.Node{node1, node3}},
|
|
||||||
{Service: etpLocalservice2, Hosts: []*v1.Node{node1, node3}},
|
|
||||||
{Service: service3, Hosts: []*v1.Node{node1, node3}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
desc: "1 node goes Ready",
|
desc: "1 node goes Ready",
|
||||||
initialState: []*v1.Node{node1, node2NotReady, node3},
|
initialState: []*v1.Node{node1, node2NotReady, node3},
|
||||||
@ -1777,8 +1762,6 @@ func Test_respectsPredicates(t *testing.T) {
|
|||||||
{want: false, input: &v1.Node{}},
|
{want: false, input: &v1.Node{}},
|
||||||
{want: true, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}},
|
{want: true, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}},
|
||||||
{want: false, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}}}}},
|
{want: false, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}}}}},
|
||||||
{want: false, input: &v1.Node{Spec: v1.NodeSpec{Unschedulable: true}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}}},
|
|
||||||
|
|
||||||
{want: true, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{}}}},
|
{want: true, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{}}}},
|
||||||
{want: false, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{v1.LabelNodeExcludeBalancers: ""}}}},
|
{want: false, input: &v1.Node{Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}}}, ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{v1.LabelNodeExcludeBalancers: ""}}}},
|
||||||
|
|
||||||
@ -1865,150 +1848,6 @@ func Test_shouldSyncUpdatedNode_individualPredicates(t *testing.T) {
|
|||||||
newNode *v1.Node
|
newNode *v1.Node
|
||||||
shouldSync bool
|
shouldSync bool
|
||||||
}{
|
}{
|
||||||
{
|
|
||||||
name: "unschedulable F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable F->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "taint F->T",
|
name: "taint F->T",
|
||||||
oldNode: &v1.Node{
|
oldNode: &v1.Node{
|
||||||
@ -2863,334 +2702,6 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
newNode *v1.Node
|
newNode *v1.Node
|
||||||
shouldSync bool
|
shouldSync bool
|
||||||
}{
|
}{
|
||||||
{
|
|
||||||
name: "unschedable T, tainted F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
Taints: []v1.Taint{},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
Taints: []v1.Taint{
|
|
||||||
{
|
|
||||||
Key: ToBeDeletedTaint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T, tainted T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
Taints: []v1.Taint{
|
|
||||||
{
|
|
||||||
Key: ToBeDeletedTaint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
Taints: []v1.Taint{},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T, excluded T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{
|
|
||||||
v1.LabelNodeExcludeBalancers: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T, excluded F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{
|
|
||||||
v1.LabelNodeExcludeBalancers: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T, ready F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionFalse,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "unschedable T, ready T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionFalse,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "tainted T, unschedulable F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
Taints: []v1.Taint{
|
|
||||||
{
|
|
||||||
Key: ToBeDeletedTaint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
Taints: []v1.Taint{
|
|
||||||
{
|
|
||||||
Key: ToBeDeletedTaint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "tainted T, unschedulable T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
Taints: []v1.Taint{
|
|
||||||
{
|
|
||||||
Key: ToBeDeletedTaint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
Taints: []v1.Taint{
|
|
||||||
{
|
|
||||||
Key: ToBeDeletedTaint,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "tainted T, excluded F->T",
|
name: "tainted T, excluded F->T",
|
||||||
oldNode: &v1.Node{
|
oldNode: &v1.Node{
|
||||||
@ -3375,90 +2886,6 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
},
|
},
|
||||||
shouldSync: false,
|
shouldSync: false,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "excluded T, unschedulable F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{
|
|
||||||
v1.LabelNodeExcludeBalancers: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{
|
|
||||||
v1.LabelNodeExcludeBalancers: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "excluded T, unschedulable T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{
|
|
||||||
v1.LabelNodeExcludeBalancers: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
Labels: map[string]string{
|
|
||||||
v1.LabelNodeExcludeBalancers: "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionTrue,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "excluded T, tainted F->T",
|
name: "excluded T, tainted F->T",
|
||||||
oldNode: &v1.Node{
|
oldNode: &v1.Node{
|
||||||
@ -3623,78 +3050,6 @@ func Test_shouldSyncUpdatedNode_compoundedPredicates(t *testing.T) {
|
|||||||
},
|
},
|
||||||
shouldSync: false,
|
shouldSync: false,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "ready F, unschedulable F->T",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionFalse,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionFalse,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "ready F, unschedulable T->F",
|
|
||||||
oldNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: true,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionFalse,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
newNode: &v1.Node{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: "node",
|
|
||||||
},
|
|
||||||
Spec: v1.NodeSpec{
|
|
||||||
Unschedulable: false,
|
|
||||||
},
|
|
||||||
Status: v1.NodeStatus{
|
|
||||||
Conditions: []v1.NodeCondition{
|
|
||||||
{
|
|
||||||
Type: v1.NodeReady,
|
|
||||||
Status: v1.ConditionFalse,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
shouldSync: false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: "ready F, tainted F->T",
|
name: "ready F, tainted F->T",
|
||||||
oldNode: &v1.Node{
|
oldNode: &v1.Node{
|
||||||
|
Loading…
Reference in New Issue
Block a user