// AddToNodeAddresses appends the NodeAddresses to the passed-by-pointer slice, // only if they do not already exist func AddToNodeAddresses(addresses *[]v1.NodeAddress, addAddresses ...v1.NodeAddress) { … } // GetNodeAddressesFromNodeIPLegacy filters node addresses to prefer a specific node IP or // address family. This function is used only with legacy cloud providers. // // If nodeIP is either '0.0.0.0' or '::' it is taken to represent any address of // that address family: IPv4 or IPv6. i.e. if nodeIP is '0.0.0.0' we will return // node addresses sorted such that all IPv4 addresses are listed before IPv6 // addresses. // // If nodeIP is a specific IP, either IPv4 or IPv6, we will return node // addresses filtered such that: // - Any address matching nodeIP will be listed first. // - If nodeIP matches an address of a particular type (internal or external), // that will be the *only* address of that type returned. // - All remaining addresses are listed after. func GetNodeAddressesFromNodeIPLegacy(nodeIP net.IP, cloudNodeAddresses []v1.NodeAddress) ([]v1.NodeAddress, error) { … } // GetNodeAddressesFromNodeIP filters the provided list of nodeAddresses to match the // providedNodeIP from the Node annotation (which is assumed to be non-empty). This is // used for external cloud providers. // // It will return node addresses filtered such that: // - Any address matching nodeIP will be listed first. // - If nodeIP matches an address of a particular type (internal or external), // that will be the *only* address of that type returned. // - All remaining addresses are listed after. // // (This does not have the same behavior with `0.0.0.0` and `::` as // GetNodeAddressesFromNodeIPLegacy, because that case never occurs for external cloud // providers, because kubelet does not set the `provided-node-ip` annotation in that // case.) func GetNodeAddressesFromNodeIP(providedNodeIP string, cloudNodeAddresses []v1.NodeAddress) ([]v1.NodeAddress, error) { … }