mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
Create nodes with labels instead of adding them later
This commit is contained in:
parent
4c853bb28f
commit
a759fb20ff
@ -58,7 +58,6 @@ go_test(
|
||||
"//staging/src/k8s.io/kube-scheduler/extender/v1:go_default_library",
|
||||
"//test/integration/framework:go_default_library",
|
||||
"//test/integration/util:go_default_library",
|
||||
"//test/utils:go_default_library",
|
||||
"//test/utils/image:go_default_library",
|
||||
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||
|
@ -29,7 +29,6 @@ import (
|
||||
"k8s.io/client-go/kubernetes"
|
||||
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
||||
testutils "k8s.io/kubernetes/test/integration/util"
|
||||
"k8s.io/kubernetes/test/utils"
|
||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||
)
|
||||
|
||||
@ -871,22 +870,14 @@ func TestEvenPodsSpreadPredicate(t *testing.T) {
|
||||
cs := testCtx.ClientSet
|
||||
ns := testCtx.NS.Name
|
||||
defer testutils.CleanupTest(t, testCtx)
|
||||
// Add 4 nodes.
|
||||
nodes, err := createNodes(cs, "node", st.MakeNode(), 4)
|
||||
|
||||
for i := 0; i < 4; i++ {
|
||||
// Create nodes with labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
||||
nodeName := fmt.Sprintf("node-%d", i)
|
||||
zone := fmt.Sprintf("zone-%d", i/2)
|
||||
_, err := createNode(cs, st.MakeNode().Name(nodeName).Label("node", nodeName).Label("zone", zone).Obj())
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot create nodes: %v", err)
|
||||
}
|
||||
for i, node := range nodes {
|
||||
// Apply labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
||||
labels := map[string]string{
|
||||
"zone": fmt.Sprintf("zone-%d", i/2),
|
||||
"node": node.Name,
|
||||
}
|
||||
if err = utils.AddLabelsToNode(cs, node.Name, labels); err != nil {
|
||||
t.Fatalf("Cannot add labels to node: %v", err)
|
||||
}
|
||||
if err = waitForNodeLabels(cs, node.Name, labels); err != nil {
|
||||
t.Fatalf("Failed to poll node labels: %v", err)
|
||||
t.Fatalf("Cannot create node: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,6 @@ import (
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
||||
testutils "k8s.io/kubernetes/test/integration/util"
|
||||
"k8s.io/kubernetes/test/utils"
|
||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||
)
|
||||
|
||||
@ -40,23 +39,18 @@ func TestNodeAffinity(t *testing.T) {
|
||||
testCtx := initTest(t, "node-affinity")
|
||||
defer testutils.CleanupTest(t, testCtx)
|
||||
// Add a few nodes.
|
||||
nodes, err := createNodes(testCtx.ClientSet, "testnode", st.MakeNode(), 5)
|
||||
_, err := createNodes(testCtx.ClientSet, "testnode", st.MakeNode(), 4)
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot create nodes: %v", err)
|
||||
}
|
||||
// Add a label to one of the nodes.
|
||||
labeledNode := nodes[1]
|
||||
labelKey := "kubernetes.io/node-topologyKey"
|
||||
labelValue := "topologyvalue"
|
||||
labels := map[string]string{
|
||||
labelKey: labelValue,
|
||||
}
|
||||
if err = utils.AddLabelsToNode(testCtx.ClientSet, labeledNode.Name, labels); err != nil {
|
||||
t.Fatalf("Cannot add labels to node: %v", err)
|
||||
}
|
||||
if err = waitForNodeLabels(testCtx.ClientSet, labeledNode.Name, labels); err != nil {
|
||||
t.Fatalf("Adding labels to node didn't succeed: %v", err)
|
||||
labeledNode, err := createNode(testCtx.ClientSet, st.MakeNode().Name("testnode-4").Label(labelKey, labelValue).Obj())
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot create labeled node: %v", err)
|
||||
}
|
||||
|
||||
// Create a pod with node affinity.
|
||||
podName := "pod-with-node-affinity"
|
||||
pod, err := runPausePod(testCtx.ClientSet, initPausePod(&pausePodConfig{
|
||||
@ -234,23 +228,17 @@ func TestEvenPodsSpreadPriority(t *testing.T) {
|
||||
cs := testCtx.ClientSet
|
||||
ns := testCtx.NS.Name
|
||||
defer testutils.CleanupTest(t, testCtx)
|
||||
// Add 4 nodes.
|
||||
nodes, err := createNodes(cs, "node", st.MakeNode(), 4)
|
||||
|
||||
var nodes []*v1.Node
|
||||
for i := 0; i < 4; i++ {
|
||||
// Create nodes with labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
||||
nodeName := fmt.Sprintf("node-%d", i)
|
||||
zone := fmt.Sprintf("zone-%d", i/2)
|
||||
node, err := createNode(cs, st.MakeNode().Name(nodeName).Label("node", nodeName).Label("zone", zone).Obj())
|
||||
if err != nil {
|
||||
t.Fatalf("Cannot create nodes: %v", err)
|
||||
}
|
||||
for i, node := range nodes {
|
||||
// Apply labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
||||
labels := map[string]string{
|
||||
"zone": fmt.Sprintf("zone-%d", i/2),
|
||||
"node": node.Name,
|
||||
}
|
||||
if err = utils.AddLabelsToNode(cs, node.Name, labels); err != nil {
|
||||
t.Fatalf("Cannot add labels to node: %v", err)
|
||||
}
|
||||
if err = waitForNodeLabels(cs, node.Name, labels); err != nil {
|
||||
t.Fatalf("Adding labels to node failed: %v", err)
|
||||
t.Fatalf("Cannot create node: %v", err)
|
||||
}
|
||||
nodes = append(nodes, node)
|
||||
}
|
||||
|
||||
// Taint the 0th node
|
||||
@ -259,10 +247,10 @@ func TestEvenPodsSpreadPriority(t *testing.T) {
|
||||
Value: "v1",
|
||||
Effect: v1.TaintEffectNoSchedule,
|
||||
}
|
||||
if err = testutils.AddTaintToNode(cs, nodes[0].Name, taint); err != nil {
|
||||
if err := testutils.AddTaintToNode(cs, nodes[0].Name, taint); err != nil {
|
||||
t.Fatalf("Adding taint to node failed: %v", err)
|
||||
}
|
||||
if err = testutils.WaitForNodeTaints(cs, nodes[0], []v1.Taint{taint}); err != nil {
|
||||
if err := testutils.WaitForNodeTaints(cs, nodes[0], []v1.Taint{taint}); err != nil {
|
||||
t.Fatalf("Taint not seen on node: %v", err)
|
||||
}
|
||||
|
||||
|
@ -126,28 +126,6 @@ func waitForReflection(t *testing.T, nodeLister corelisters.NodeLister, key stri
|
||||
return err
|
||||
}
|
||||
|
||||
// nodeHasLabels returns a function that checks if a node has all the given labels.
|
||||
func nodeHasLabels(cs clientset.Interface, nodeName string, labels map[string]string) wait.ConditionFunc {
|
||||
return func() (bool, error) {
|
||||
node, err := cs.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
// This could be a connection error so we want to retry.
|
||||
return false, nil
|
||||
}
|
||||
for k, v := range labels {
|
||||
if node.Labels == nil || node.Labels[k] != v {
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
|
||||
// waitForNodeLabels waits for the given node to have all the given labels.
|
||||
func waitForNodeLabels(cs clientset.Interface, nodeName string, labels map[string]string) error {
|
||||
return wait.Poll(time.Millisecond*100, wait.ForeverTestTimeout, nodeHasLabels(cs, nodeName, labels))
|
||||
}
|
||||
|
||||
func createNode(cs clientset.Interface, node *v1.Node) (*v1.Node, error) {
|
||||
return cs.CoreV1().Nodes().Create(context.TODO(), node, metav1.CreateOptions{})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user