mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #90738 from kaivalya97/patch-1
Change gce Instances::NodeAddresses function to work if it runs outside kubelet
This commit is contained in:
commit
440b5c2fbc
@ -83,29 +83,53 @@ func (g *Cloud) ToInstanceReferences(zone string, instanceNames []string) (refs
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NodeAddresses is an implementation of Instances.NodeAddresses.
|
// NodeAddresses is an implementation of Instances.NodeAddresses.
|
||||||
func (g *Cloud) NodeAddresses(_ context.Context, _ types.NodeName) ([]v1.NodeAddress, error) {
|
func (g *Cloud) NodeAddresses(ctx context.Context, nodeName types.NodeName) ([]v1.NodeAddress, error) {
|
||||||
internalIP, err := metadata.Get("instance/network-interfaces/0/ip")
|
timeoutCtx, cancel := context.WithTimeout(ctx, 1*time.Hour)
|
||||||
if err != nil {
|
defer cancel()
|
||||||
return nil, fmt.Errorf("couldn't get internal IP: %v", err)
|
|
||||||
}
|
instanceName := string(nodeName)
|
||||||
externalIP, err := metadata.Get("instance/network-interfaces/0/access-configs/0/external-ip")
|
|
||||||
if err != nil {
|
if g.useMetadataServer {
|
||||||
return nil, fmt.Errorf("couldn't get external IP: %v", err)
|
// Use metadata server if possible
|
||||||
}
|
if g.isCurrentInstance(instanceName) {
|
||||||
addresses := []v1.NodeAddress{
|
|
||||||
{Type: v1.NodeInternalIP, Address: internalIP},
|
internalIP, err := metadata.Get("instance/network-interfaces/0/ip")
|
||||||
{Type: v1.NodeExternalIP, Address: externalIP},
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("couldn't get internal IP: %v", err)
|
||||||
|
}
|
||||||
|
externalIP, err := metadata.Get("instance/network-interfaces/0/access-configs/0/external-ip")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("couldn't get external IP: %v", err)
|
||||||
|
}
|
||||||
|
addresses := []v1.NodeAddress{
|
||||||
|
{Type: v1.NodeInternalIP, Address: internalIP},
|
||||||
|
{Type: v1.NodeExternalIP, Address: externalIP},
|
||||||
|
}
|
||||||
|
|
||||||
|
if internalDNSFull, err := metadata.Get("instance/hostname"); err != nil {
|
||||||
|
klog.Warningf("couldn't get full internal DNS name: %v", err)
|
||||||
|
} else {
|
||||||
|
addresses = append(addresses,
|
||||||
|
v1.NodeAddress{Type: v1.NodeInternalDNS, Address: internalDNSFull},
|
||||||
|
v1.NodeAddress{Type: v1.NodeHostName, Address: internalDNSFull},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return addresses, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if internalDNSFull, err := metadata.Get("instance/hostname"); err != nil {
|
// Use GCE API
|
||||||
klog.Warningf("couldn't get full internal DNS name: %v", err)
|
instanceObj, err := g.getInstanceByName(instanceName)
|
||||||
} else {
|
if err != nil {
|
||||||
addresses = append(addresses,
|
return nil, fmt.Errorf("couldn't get instance details: %v", err)
|
||||||
v1.NodeAddress{Type: v1.NodeInternalDNS, Address: internalDNSFull},
|
|
||||||
v1.NodeAddress{Type: v1.NodeHostName, Address: internalDNSFull},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
return addresses, nil
|
|
||||||
|
instance, err := g.c.Instances().Get(timeoutCtx, meta.ZonalKey(canonicalizeInstanceName(instanceObj.Name), instanceObj.Zone))
|
||||||
|
if err != nil {
|
||||||
|
return []v1.NodeAddress{}, fmt.Errorf("error while querying for instance: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nodeAddressesFromInstance(instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeAddressesByProviderID will not be called from the node that is requesting this ID.
|
// NodeAddressesByProviderID will not be called from the node that is requesting this ID.
|
||||||
|
Loading…
Reference in New Issue
Block a user