mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Fix InstanceMetadataByProviderID for unmanaged nodes
This commit is contained in:
parent
27aca3f7c2
commit
09e73d81dc
@ -236,30 +236,27 @@ func (az *Cloud) InstanceShutdownByProviderID(ctx context.Context, providerID st
|
|||||||
}
|
}
|
||||||
|
|
||||||
// InstanceMetadataByProviderID returns metadata of the specified instance.
|
// InstanceMetadataByProviderID returns metadata of the specified instance.
|
||||||
|
// InstanceMetadataByProviderID is part of InstancesV2 interface and is only used in cloud node-controller.
|
||||||
func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID string) (*cloudprovider.InstanceMetadata, error) {
|
func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID string) (*cloudprovider.InstanceMetadata, error) {
|
||||||
if providerID == "" {
|
if providerID == "" {
|
||||||
return nil, errNodeNotInitialized
|
return nil, errNodeNotInitialized
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns nil for unmanaged nodes because azure cloud provider couldn't fetch information for them.
|
||||||
|
if az.IsNodeUnmanagedByProviderID(providerID) {
|
||||||
|
klog.V(4).Infof("NodeAddressesByProviderID: omitting unmanaged node %q", providerID)
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
nodeName, err := az.vmSet.GetNodeNameByProviderID(providerID)
|
nodeName, err := az.vmSet.GetNodeNameByProviderID(providerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns "" for unmanaged nodes because azure cloud provider couldn't fetch information for them.
|
|
||||||
unmanaged, err := az.IsNodeUnmanaged(string(nodeName))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if unmanaged {
|
|
||||||
klog.V(4).Infof("InstanceType: omitting unmanaged node %q", string(nodeName))
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
md := &cloudprovider.InstanceMetadata{}
|
md := &cloudprovider.InstanceMetadata{}
|
||||||
md.ProviderID = providerID
|
md.ProviderID = providerID
|
||||||
if az.UseInstanceMetadata {
|
if az.UseInstanceMetadata {
|
||||||
metadata, err := az.metadata.GetMetadata(azcache.CacheReadTypeUnsafe)
|
metadata, err := az.metadata.GetMetadata(azcache.CacheReadTypeDefault)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -288,6 +285,7 @@ func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID st
|
|||||||
return nil, fmt.Errorf("no credentials provided for Azure cloud provider")
|
return nil, fmt.Errorf("no credentials provided for Azure cloud provider")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get instance metadata from IMDS for local instance.
|
||||||
if metadata.Compute.VMSize != "" {
|
if metadata.Compute.VMSize != "" {
|
||||||
md.Type = metadata.Compute.VMSize
|
md.Type = metadata.Compute.VMSize
|
||||||
} else {
|
} else {
|
||||||
@ -301,6 +299,7 @@ func (az *Cloud) InstanceMetadataByProviderID(ctx context.Context, providerID st
|
|||||||
return md, nil
|
return md, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get instance metadata from ARM API when UseInstanceMetadata is disabled.
|
||||||
if md.Type, err = az.vmSet.GetInstanceTypeByNodeName(string(nodeName)); err != nil {
|
if md.Type, err = az.vmSet.GetInstanceTypeByNodeName(string(nodeName)); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -690,6 +690,11 @@ func TestInstanceMetadataByProviderID(t *testing.T) {
|
|||||||
name: "InstanceMetadataByProviderID should report error if providerID is null",
|
name: "InstanceMetadataByProviderID should report error if providerID is null",
|
||||||
expectedErrMsg: fmt.Errorf("providerID is empty, the node is not initialized yet"),
|
expectedErrMsg: fmt.Errorf("providerID is empty, the node is not initialized yet"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "InstanceMetadataByProviderID should return nil if the node is unmanaged",
|
||||||
|
providerID: "baremental-node",
|
||||||
|
expectedMetadata: nil,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "InstanceMetadataByProviderID should report error if providerID is invalid",
|
name: "InstanceMetadataByProviderID should report error if providerID is invalid",
|
||||||
providerID: "azure:///subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachine/vm3",
|
providerID: "azure:///subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachine/vm3",
|
||||||
|
Loading…
Reference in New Issue
Block a user