Bug 1897743

Summary: Default route is always selected for Node InternalIP
Product: OpenShift Container Platform Reporter: Robert Bost <rbost>
Component: NetworkingAssignee: Yossi Boaron <yboaron>
Networking sub component: runtime-cfg QA Contact: Victor Voronkov <vvoronko>
Status: CLOSED DUPLICATE Docs Contact:
Severity: high    
Priority: high CC: aos-bugs, bbennett, bnemec, dcbw
Version: 4.6Keywords: Triaged
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-06-11 15:41:59 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Robert Bost 2020-11-13 23:30:38 UTC
Description of problem:

Starting in OCP 4.6 the default route is always selected for the Node's InternalIP when installing using UPI. 

Installation has multiple network interfaces configured at install time. 

In OCP 4.5 the expected interface was selected which was the first interface immediately after loopback in `ip addr` listing. 

Version-Release number of selected component (if applicable): 4.6.1


How reproducible: Each time. 


Actual results: InternalIP for Node is incorrectly selected. 


Expected results: Either matching behavior in 4.5 where first interface is selected or having option to choose interface at install time.

Comment 3 Dan Williams 2020-11-17 14:34:35 UTC
Interface listing in 'ip addr' depends on kernel device enumeration order which is not stable and can change. Kubelet (or a cloud provider) is responsible detecting the node's IP address and posting to the apiserver. If you need a specific interface listed as the node's InternalIP then you need to pass specific options to kubelet to tell it which interface to use.

See https://bugzilla.redhat.com/show_bug.cgi?id=1872632 for a variation of this problem (on bare-metal installs).

Comment 4 Robert Bost 2020-11-17 17:41:01 UTC
> If you need a specific interface listed as the node's InternalIP then you need to pass specific options to kubelet to tell it which interface to use.

Yeah, the main concern is that in OCP 4.5 and earlier, looks like the kubelet picked up the InternalIP automatically. But, in 4.6 and later, the runtime-cfg sets its via a kubelet arg. Runtime-cfg picks the IP based on default route (different behavior than before).

Comment 6 Ben Nemec 2021-06-11 15:41:59 UTC

*** This bug has been marked as a duplicate of bug 1949827 ***