Skip to content

Commit 4670138

Browse files
authored
Merge pull request kubernetes#92572 from feiskyer/fix-instance-metadata
Fix InstanceMetadataByProviderID for unmanaged nodes
2 parents 1c658d2 + 09e73d8 commit 4670138

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

staging/src/k8s.io/legacy-cloud-providers/azure/azure_instances.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -236,30 +236,27 @@ func (az *Cloud) InstanceShutdownByProviderID(ctx context.Context, providerID st
236236
}
237237

238238
// InstanceMetadataByProviderID returns metadata of the specified instance.
239+
// InstanceMetadataByProviderID is part of InstancesV2 interface and is only used in cloud node-controller.
239240
func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID string) (*cloudprovider.InstanceMetadata, error) {
240241
if providerID == "" {
241242
return nil, errNodeNotInitialized
242243
}
243244

244-
nodeName, err := az.vmSet.GetNodeNameByProviderID(providerID)
245-
if err != nil {
246-
return nil, err
245+
// Returns nil for unmanaged nodes because azure cloud provider couldn't fetch information for them.
246+
if az.IsNodeUnmanagedByProviderID(providerID) {
247+
klog.V(4).Infof("NodeAddressesByProviderID: omitting unmanaged node %q", providerID)
248+
return nil, nil
247249
}
248250

249-
// Returns "" for unmanaged nodes because azure cloud provider couldn't fetch information for them.
250-
unmanaged, err := az.IsNodeUnmanaged(string(nodeName))
251+
nodeName, err := az.vmSet.GetNodeNameByProviderID(providerID)
251252
if err != nil {
252253
return nil, err
253254
}
254-
if unmanaged {
255-
klog.V(4).Infof("InstanceType: omitting unmanaged node %q", string(nodeName))
256-
return nil, nil
257-
}
258255

259256
md := &cloudprovider.InstanceMetadata{}
260257
md.ProviderID = providerID
261258
if az.UseInstanceMetadata {
262-
metadata, err := az.metadata.GetMetadata(azcache.CacheReadTypeUnsafe)
259+
metadata, err := az.metadata.GetMetadata(azcache.CacheReadTypeDefault)
263260
if err != nil {
264261
return nil, err
265262
}
@@ -288,6 +285,7 @@ func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID st
288285
return nil, fmt.Errorf("no credentials provided for Azure cloud provider")
289286
}
290287

288+
// Get instance metadata from IMDS for local instance.
291289
if metadata.Compute.VMSize != "" {
292290
md.Type = metadata.Compute.VMSize
293291
} else {
@@ -301,6 +299,7 @@ func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID st
301299
return md, nil
302300
}
303301

302+
// Get instance metadata from ARM API when UseInstanceMetadata is disabled.
304303
if md.Type, err = az.vmSet.GetInstanceTypeByNodeName(string(nodeName)); err != nil {
305304
return nil, err
306305
}

staging/src/k8s.io/legacy-cloud-providers/azure/azure_instances_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,11 @@ func TestInstanceMetadataByProviderID(t *testing.T) {
690690
name: "InstanceMetadataByProviderID should report error if providerID is null",
691691
expectedErrMsg: fmt.Errorf("providerID is empty, the node is not initialized yet"),
692692
},
693+
{
694+
name: "InstanceMetadataByProviderID should return nil if the node is unmanaged",
695+
providerID: "baremental-node",
696+
expectedMetadata: nil,
697+
},
693698
{
694699
name: "InstanceMetadataByProviderID should report error if providerID is invalid",
695700
providerID: "azure:///subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachine/vm3",

0 commit comments

Comments
 (0)