mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
Merge pull request #91162 from kaivalya97/patch-2
gce-Instances NodeAddresses: Add check for multiple interface IPs
This commit is contained in:
commit
7942dca975
@ -42,7 +42,10 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
defaultZone = ""
|
||||
defaultZone = ""
|
||||
networkInterfaceIP = "instance/network-interfaces/%s/ip"
|
||||
networkInterfaceAccessConfigs = "instance/network-interfaces/%s/access-configs"
|
||||
networkInterfaceExternalIP = "instance/network-interfaces/%s/access-configs/%s/external-ip"
|
||||
)
|
||||
|
||||
func newInstancesMetricContext(request, zone string) *metricContext {
|
||||
@ -93,28 +96,60 @@ func (g *Cloud) NodeAddresses(ctx context.Context, nodeName types.NodeName) ([]v
|
||||
// Use metadata server if possible
|
||||
if g.isCurrentInstance(instanceName) {
|
||||
|
||||
internalIP, err := metadata.Get("instance/network-interfaces/0/ip")
|
||||
nics, err := metadata.Get("instance/network-interfaces/")
|
||||
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},
|
||||
return nil, fmt.Errorf("couldn't get network interfaces: %v", err)
|
||||
}
|
||||
|
||||
if internalDNSFull, err := metadata.Get("instance/hostname"); err != nil {
|
||||
nicsArr := strings.Split(nics, "/\n")
|
||||
nodeAddresses := []v1.NodeAddress{}
|
||||
|
||||
for _, nic := range nicsArr {
|
||||
|
||||
if nic == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
internalIP, err := metadata.Get(fmt.Sprintf(networkInterfaceIP, nic))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't get internal IP: %v", err)
|
||||
}
|
||||
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: internalIP})
|
||||
|
||||
acs, err := metadata.Get(fmt.Sprintf(networkInterfaceAccessConfigs, nic))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't get access configs: %v", err)
|
||||
}
|
||||
|
||||
acsArr := strings.Split(acs, "/\n")
|
||||
|
||||
for _, ac := range acsArr {
|
||||
|
||||
if ac == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
externalIP, err := metadata.Get(fmt.Sprintf(networkInterfaceExternalIP, nic, ac))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't get external IP: %v", err)
|
||||
}
|
||||
|
||||
if externalIP != "" {
|
||||
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: externalIP})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internalDNSFull, err := metadata.Get("instance/hostname")
|
||||
if err != nil {
|
||||
klog.Warningf("couldn't get full internal DNS name: %v", err)
|
||||
} else {
|
||||
addresses = append(addresses,
|
||||
nodeAddresses = append(nodeAddresses,
|
||||
v1.NodeAddress{Type: v1.NodeInternalDNS, Address: internalDNSFull},
|
||||
v1.NodeAddress{Type: v1.NodeHostName, Address: internalDNSFull},
|
||||
)
|
||||
}
|
||||
return addresses, nil
|
||||
return nodeAddresses, nil
|
||||
}
|
||||
}
|
||||
|
||||
@ -209,12 +244,15 @@ func nodeAddressesFromInstance(instance *compute.Instance) ([]v1.NodeAddress, er
|
||||
if len(instance.NetworkInterfaces) < 1 {
|
||||
return nil, fmt.Errorf("could not find network interfaces for instanceID %q", instance.Id)
|
||||
}
|
||||
networkInterface := instance.NetworkInterfaces[0]
|
||||
nodeAddresses := []v1.NodeAddress{}
|
||||
|
||||
nodeAddresses := []v1.NodeAddress{{Type: v1.NodeInternalIP, Address: networkInterface.NetworkIP}}
|
||||
for _, config := range networkInterface.AccessConfigs {
|
||||
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: config.NatIP})
|
||||
for _, nic := range instance.NetworkInterfaces {
|
||||
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: nic.NetworkIP})
|
||||
for _, config := range nic.AccessConfigs {
|
||||
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: config.NatIP})
|
||||
}
|
||||
}
|
||||
|
||||
return nodeAddresses, nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user