mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 10:19:50 +00:00
Merge pull request #6161 from justinsb/populate_addresses_new_nodes
Make sure we have addresses for newly discovered nodes
This commit is contained in:
commit
44fda1fcd1
@ -227,9 +227,20 @@ func (nc *NodeController) SyncCloudNodes() error {
|
|||||||
nodeMap[node.Name] = &node
|
nodeMap[node.Name] = &node
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create nodes which have been created in cloud, but not in kubernetes cluster.
|
// Create nodes which have been created in cloud, but not in kubernetes cluster
|
||||||
|
// Skip nodes if we hit an error while trying to get their addresses.
|
||||||
for _, node := range matches.Items {
|
for _, node := range matches.Items {
|
||||||
if _, ok := nodeMap[node.Name]; !ok {
|
if _, ok := nodeMap[node.Name]; !ok {
|
||||||
|
glog.V(3).Infof("Querying addresses for new node: %s", node.Name)
|
||||||
|
nodeList := &api.NodeList{}
|
||||||
|
nodeList.Items = []api.Node{node}
|
||||||
|
_, err = nc.PopulateAddresses(nodeList)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Error fetching addresses for new node %s: %v", node.Name, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
node.Status.Addresses = nodeList.Items[0].Status.Addresses
|
||||||
|
|
||||||
glog.Infof("Create node in registry: %s", node.Name)
|
glog.Infof("Create node in registry: %s", node.Name)
|
||||||
_, err = nc.kubeClient.Nodes().Create(&node)
|
_, err = nc.kubeClient.Nodes().Create(&node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -412,6 +412,7 @@ func TestSyncCloudNodes(t *testing.T) {
|
|||||||
expectedRequestCount int
|
expectedRequestCount int
|
||||||
expectedNameCreated []string
|
expectedNameCreated []string
|
||||||
expectedExtIDCreated []string
|
expectedExtIDCreated []string
|
||||||
|
expectedAddrsCreated []string
|
||||||
expectedDeleted []string
|
expectedDeleted []string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -425,11 +426,13 @@ func TestSyncCloudNodes(t *testing.T) {
|
|||||||
"node0": "ext-node0",
|
"node0": "ext-node0",
|
||||||
"node1": "ext-node1",
|
"node1": "ext-node1",
|
||||||
},
|
},
|
||||||
|
Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}},
|
||||||
},
|
},
|
||||||
matchRE: ".*",
|
matchRE: ".*",
|
||||||
expectedRequestCount: 1, // List
|
expectedRequestCount: 1, // List
|
||||||
expectedNameCreated: []string{},
|
expectedNameCreated: []string{},
|
||||||
expectedExtIDCreated: []string{},
|
expectedExtIDCreated: []string{},
|
||||||
|
expectedAddrsCreated: []string{},
|
||||||
expectedDeleted: []string{},
|
expectedDeleted: []string{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -443,11 +446,13 @@ func TestSyncCloudNodes(t *testing.T) {
|
|||||||
"node0": "ext-node0",
|
"node0": "ext-node0",
|
||||||
"node1": "ext-node1",
|
"node1": "ext-node1",
|
||||||
},
|
},
|
||||||
|
Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}},
|
||||||
},
|
},
|
||||||
matchRE: ".*",
|
matchRE: ".*",
|
||||||
expectedRequestCount: 2, // List + Create
|
expectedRequestCount: 2, // List + Create
|
||||||
expectedNameCreated: []string{"node1"},
|
expectedNameCreated: []string{"node1"},
|
||||||
expectedExtIDCreated: []string{"ext-node1"},
|
expectedExtIDCreated: []string{"ext-node1"},
|
||||||
|
expectedAddrsCreated: []string{"1.2.3.4"},
|
||||||
expectedDeleted: []string{},
|
expectedDeleted: []string{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -461,11 +466,13 @@ func TestSyncCloudNodes(t *testing.T) {
|
|||||||
"node0": "ext-node0",
|
"node0": "ext-node0",
|
||||||
"node1": "ext-node1",
|
"node1": "ext-node1",
|
||||||
},
|
},
|
||||||
|
Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}},
|
||||||
},
|
},
|
||||||
matchRE: ".*",
|
matchRE: ".*",
|
||||||
expectedRequestCount: 2, // List + Delete
|
expectedRequestCount: 2, // List + Delete
|
||||||
expectedNameCreated: []string{},
|
expectedNameCreated: []string{},
|
||||||
expectedExtIDCreated: []string{},
|
expectedExtIDCreated: []string{},
|
||||||
|
expectedAddrsCreated: []string{},
|
||||||
expectedDeleted: []string{"node1"},
|
expectedDeleted: []string{"node1"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -480,11 +487,13 @@ func TestSyncCloudNodes(t *testing.T) {
|
|||||||
"node1": "ext-node1",
|
"node1": "ext-node1",
|
||||||
"fake": "ext-fake",
|
"fake": "ext-fake",
|
||||||
},
|
},
|
||||||
|
Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}},
|
||||||
},
|
},
|
||||||
matchRE: "node[0-9]+",
|
matchRE: "node[0-9]+",
|
||||||
expectedRequestCount: 2, // List + Create
|
expectedRequestCount: 2, // List + Create
|
||||||
expectedNameCreated: []string{"node1"},
|
expectedNameCreated: []string{"node1"},
|
||||||
expectedExtIDCreated: []string{"ext-node1"},
|
expectedExtIDCreated: []string{"ext-node1"},
|
||||||
|
expectedAddrsCreated: []string{"1.2.3.4"},
|
||||||
expectedDeleted: []string{},
|
expectedDeleted: []string{},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -505,6 +514,10 @@ func TestSyncCloudNodes(t *testing.T) {
|
|||||||
if !reflect.DeepEqual(item.expectedExtIDCreated, nodeExtIDs) {
|
if !reflect.DeepEqual(item.expectedExtIDCreated, nodeExtIDs) {
|
||||||
t.Errorf("expected node external id list %+v, got %+v", item.expectedExtIDCreated, nodeExtIDs)
|
t.Errorf("expected node external id list %+v, got %+v", item.expectedExtIDCreated, nodeExtIDs)
|
||||||
}
|
}
|
||||||
|
nodeAddrs := sortedNodeAddresses(item.fakeNodeHandler.CreatedNodes)
|
||||||
|
if !reflect.DeepEqual(item.expectedAddrsCreated, nodeAddrs) {
|
||||||
|
t.Errorf("expected node address list %+v, got %+v", item.expectedAddrsCreated, nodeAddrs)
|
||||||
|
}
|
||||||
nodes = sortedNodeNames(item.fakeNodeHandler.DeletedNodes)
|
nodes = sortedNodeNames(item.fakeNodeHandler.DeletedNodes)
|
||||||
if !reflect.DeepEqual(item.expectedDeleted, nodes) {
|
if !reflect.DeepEqual(item.expectedDeleted, nodes) {
|
||||||
t.Errorf("expected node list %+v, got %+v", item.expectedDeleted, nodes)
|
t.Errorf("expected node list %+v, got %+v", item.expectedDeleted, nodes)
|
||||||
@ -1446,6 +1459,17 @@ func sortedNodeNames(nodes []*api.Node) []string {
|
|||||||
return nodeNames
|
return nodeNames
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func sortedNodeAddresses(nodes []*api.Node) []string {
|
||||||
|
nodeAddresses := []string{}
|
||||||
|
for _, node := range nodes {
|
||||||
|
for _, addr := range node.Status.Addresses {
|
||||||
|
nodeAddresses = append(nodeAddresses, addr.Address)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Strings(nodeAddresses)
|
||||||
|
return nodeAddresses
|
||||||
|
}
|
||||||
|
|
||||||
func sortedNodeExternalIDs(nodes []*api.Node) []string {
|
func sortedNodeExternalIDs(nodes []*api.Node) []string {
|
||||||
nodeExternalIDs := []string{}
|
nodeExternalIDs := []string{}
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
|
Loading…
Reference in New Issue
Block a user