mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +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
@ -43,6 +43,9 @@ import (
|
|||||||
|
|
||||||
const (
|
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 {
|
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
|
// Use metadata server if possible
|
||||||
if g.isCurrentInstance(instanceName) {
|
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 network interfaces: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("couldn't get internal IP: %v", err)
|
return nil, fmt.Errorf("couldn't get internal IP: %v", err)
|
||||||
}
|
}
|
||||||
externalIP, err := metadata.Get("instance/network-interfaces/0/access-configs/0/external-ip")
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("couldn't get external IP: %v", err)
|
return nil, fmt.Errorf("couldn't get external IP: %v", err)
|
||||||
}
|
}
|
||||||
addresses := []v1.NodeAddress{
|
|
||||||
{Type: v1.NodeInternalIP, Address: internalIP},
|
if externalIP != "" {
|
||||||
{Type: v1.NodeExternalIP, Address: externalIP},
|
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: externalIP})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if internalDNSFull, err := metadata.Get("instance/hostname"); err != nil {
|
internalDNSFull, err := metadata.Get("instance/hostname")
|
||||||
|
if err != nil {
|
||||||
klog.Warningf("couldn't get full internal DNS name: %v", err)
|
klog.Warningf("couldn't get full internal DNS name: %v", err)
|
||||||
} else {
|
} else {
|
||||||
addresses = append(addresses,
|
nodeAddresses = append(nodeAddresses,
|
||||||
v1.NodeAddress{Type: v1.NodeInternalDNS, Address: internalDNSFull},
|
v1.NodeAddress{Type: v1.NodeInternalDNS, Address: internalDNSFull},
|
||||||
v1.NodeAddress{Type: v1.NodeHostName, 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 {
|
if len(instance.NetworkInterfaces) < 1 {
|
||||||
return nil, fmt.Errorf("could not find network interfaces for instanceID %q", instance.Id)
|
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 _, nic := range instance.NetworkInterfaces {
|
||||||
for _, config := range networkInterface.AccessConfigs {
|
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})
|
nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: config.NatIP})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nodeAddresses, nil
|
return nodeAddresses, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user