mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +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",
|
"//staging/src/k8s.io/kube-scheduler/extender/v1:go_default_library",
|
||||||
"//test/integration/framework:go_default_library",
|
"//test/integration/framework:go_default_library",
|
||||||
"//test/integration/util:go_default_library",
|
"//test/integration/util:go_default_library",
|
||||||
"//test/utils:go_default_library",
|
|
||||||
"//test/utils/image:go_default_library",
|
"//test/utils/image:go_default_library",
|
||||||
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
|
||||||
"//vendor/k8s.io/klog/v2:go_default_library",
|
"//vendor/k8s.io/klog/v2:go_default_library",
|
||||||
|
@ -29,7 +29,6 @@ import (
|
|||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
||||||
testutils "k8s.io/kubernetes/test/integration/util"
|
testutils "k8s.io/kubernetes/test/integration/util"
|
||||||
"k8s.io/kubernetes/test/utils"
|
|
||||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -871,22 +870,14 @@ func TestEvenPodsSpreadPredicate(t *testing.T) {
|
|||||||
cs := testCtx.ClientSet
|
cs := testCtx.ClientSet
|
||||||
ns := testCtx.NS.Name
|
ns := testCtx.NS.Name
|
||||||
defer testutils.CleanupTest(t, testCtx)
|
defer testutils.CleanupTest(t, testCtx)
|
||||||
// Add 4 nodes.
|
|
||||||
nodes, err := createNodes(cs, "node", st.MakeNode(), 4)
|
for i := 0; i < 4; i++ {
|
||||||
if err != nil {
|
// Create nodes with labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
||||||
t.Fatalf("Cannot create nodes: %v", err)
|
nodeName := fmt.Sprintf("node-%d", i)
|
||||||
}
|
zone := fmt.Sprintf("zone-%d", i/2)
|
||||||
for i, node := range nodes {
|
_, err := createNode(cs, st.MakeNode().Name(nodeName).Label("node", nodeName).Label("zone", zone).Obj())
|
||||||
// Apply labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
if err != nil {
|
||||||
labels := map[string]string{
|
t.Fatalf("Cannot create node: %v", err)
|
||||||
"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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
||||||
testutils "k8s.io/kubernetes/test/integration/util"
|
testutils "k8s.io/kubernetes/test/integration/util"
|
||||||
"k8s.io/kubernetes/test/utils"
|
|
||||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -40,23 +39,18 @@ func TestNodeAffinity(t *testing.T) {
|
|||||||
testCtx := initTest(t, "node-affinity")
|
testCtx := initTest(t, "node-affinity")
|
||||||
defer testutils.CleanupTest(t, testCtx)
|
defer testutils.CleanupTest(t, testCtx)
|
||||||
// Add a few nodes.
|
// Add a few nodes.
|
||||||
nodes, err := createNodes(testCtx.ClientSet, "testnode", st.MakeNode(), 5)
|
_, err := createNodes(testCtx.ClientSet, "testnode", st.MakeNode(), 4)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Cannot create nodes: %v", err)
|
t.Fatalf("Cannot create nodes: %v", err)
|
||||||
}
|
}
|
||||||
// Add a label to one of the nodes.
|
// Add a label to one of the nodes.
|
||||||
labeledNode := nodes[1]
|
|
||||||
labelKey := "kubernetes.io/node-topologyKey"
|
labelKey := "kubernetes.io/node-topologyKey"
|
||||||
labelValue := "topologyvalue"
|
labelValue := "topologyvalue"
|
||||||
labels := map[string]string{
|
labeledNode, err := createNode(testCtx.ClientSet, st.MakeNode().Name("testnode-4").Label(labelKey, labelValue).Obj())
|
||||||
labelKey: labelValue,
|
if err != nil {
|
||||||
}
|
t.Fatalf("Cannot create labeled node: %v", err)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a pod with node affinity.
|
// Create a pod with node affinity.
|
||||||
podName := "pod-with-node-affinity"
|
podName := "pod-with-node-affinity"
|
||||||
pod, err := runPausePod(testCtx.ClientSet, initPausePod(&pausePodConfig{
|
pod, err := runPausePod(testCtx.ClientSet, initPausePod(&pausePodConfig{
|
||||||
@ -234,23 +228,17 @@ func TestEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
cs := testCtx.ClientSet
|
cs := testCtx.ClientSet
|
||||||
ns := testCtx.NS.Name
|
ns := testCtx.NS.Name
|
||||||
defer testutils.CleanupTest(t, testCtx)
|
defer testutils.CleanupTest(t, testCtx)
|
||||||
// Add 4 nodes.
|
|
||||||
nodes, err := createNodes(cs, "node", st.MakeNode(), 4)
|
var nodes []*v1.Node
|
||||||
if err != nil {
|
for i := 0; i < 4; i++ {
|
||||||
t.Fatalf("Cannot create nodes: %v", err)
|
// Create nodes with labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
||||||
}
|
nodeName := fmt.Sprintf("node-%d", i)
|
||||||
for i, node := range nodes {
|
zone := fmt.Sprintf("zone-%d", i/2)
|
||||||
// Apply labels "zone: zone-{0,1}" and "node: <node name>" to each node.
|
node, err := createNode(cs, st.MakeNode().Name(nodeName).Label("node", nodeName).Label("zone", zone).Obj())
|
||||||
labels := map[string]string{
|
if err != nil {
|
||||||
"zone": fmt.Sprintf("zone-%d", i/2),
|
t.Fatalf("Cannot create node: %v", err)
|
||||||
"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)
|
|
||||||
}
|
}
|
||||||
|
nodes = append(nodes, node)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Taint the 0th node
|
// Taint the 0th node
|
||||||
@ -259,10 +247,10 @@ func TestEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
Value: "v1",
|
Value: "v1",
|
||||||
Effect: v1.TaintEffectNoSchedule,
|
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)
|
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)
|
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
|
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) {
|
func createNode(cs clientset.Interface, node *v1.Node) (*v1.Node, error) {
|
||||||
return cs.CoreV1().Nodes().Create(context.TODO(), node, metav1.CreateOptions{})
|
return cs.CoreV1().Nodes().Create(context.TODO(), node, metav1.CreateOptions{})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user