-
Bug
-
Resolution: Cannot Reproduce
-
Undefined
-
None
-
4.20.0
-
Quality / Stability / Reliability
-
False
-
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem: [BGP EIP L3 CUDN LGW mode] access external agnhost service failed from pod that is not using egressIP but is created in same namespace with egressIP pods
Version-Release number of selected component (if applicable):
How reproducible:
Steps to Reproduce:
1. Label egress node,
2. create labelled UDN namespace, label the namespace to match namespaceSelector of egressIP object that will be created in step 5
#oc get ns e2e-test-udn-networking-38t25mij-cjw7b --show-labels | grep org=
e2e-test-udn-networking-38t25mij-cjw7b Active 87s cudn-bgp=cudn-network-f63p6zz0,k8s.ovn.org/primary-user-defined-network=null,kubernetes.io/metadata.name=e2e-test-udn-networking-38t25mij-cjw7b,org=qe,pod-security.kubernetes.io/audit-version=latest,pod-security.kubernetes.io/audit=restricted,pod-security.kubernetes.io/enforce-version=latest,pod-security.kubernetes.io/enforce=restricted,pod-security.kubernetes.io/warn-version=latest,pod-security.kubernetes.io/warn=restricted
3. create L3 CUDN, label the L3 CUDN properly to match the networkSelector of CUDN RA that will be created in step 4
4. create a CUDN RA that has both EgressIP and PodNetwork in advertisements spec, use {} for nodeSelector
#oc get ra ra-cudn -oyaml
apiVersion: k8s.ovn.org/v1
kind: RouteAdvertisements
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"k8s.ovn.org/v1","kind":"RouteAdvertisements","metadata":{"annotations":{},"name":"ra-cudn"},"spec":{"advertisements":["PodNetwork","EgressIP"],"frrConfigurationSelector":{},"networkSelectors":[{"clusterUserDefinedNetworkSelector":{"networkSelector":{"matchLabels":
}},"networkSelectionType":"ClusterUserDefinedNetworks"}],"nodeSelector":{}}}
creationTimestamp: "2025-05-28T17:36:20Z"
generation: 1
name: ra-cudn
resourceVersion: "898903"
uid: 1858ff97-d5c7-4f65-942e-324dfc3442c1
spec:
advertisements:
- PodNetwork
- EgressIP
frrConfigurationSelector: {}
networkSelectors:
- clusterUserDefinedNetworkSelector:
networkSelector:
matchLabels:
app: udn
networkSelectionType: ClusterUserDefinedNetworks
nodeSelector: {}
status:
conditions:
- lastTransitionTime: "2025-05-28T17:36:42Z"
message: ovn-kubernetes cluster-manager validated the resource and requested the
necessary configuration changes
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
status: Accepted
5. Create an egressIP object with namespaceSelector matching label of the UDN namespace
#oc get egressip -oyaml
apiVersion: v1
items:
- apiVersion: k8s.ovn.org/v1
kind: EgressIP
metadata:
annotations:
k8s.ovn.org/egressip-mark: "50001"
creationTimestamp: "2025-05-28T18:06:04Z"
generation: 2
name: egressip-79715
resourceVersion: "908165"
uid: e660da13-3893-400d-8f0d-9fcc1e6893be
spec:
egressIPs:
- 192.168.111.96
namespaceSelector:
matchLabels:
org: qe
podSelector:
matchLabels:
color: pink
status:
items:
- egressIP: 192.168.111.96
node: worker-0
kind: List
metadata:
resourceVersion: ""
6. Create two egressIP pods local and remote to egress node, their label should match the podSelector of egressIP object created in step 5
7. Create a third test pod without podSelector label, so it is not using egressIP
#oc -n e2e-test-udn-networking-38t25mij-cjw7b get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
hello-pod-non-eip-e2e-test-udn-networking-38t25mij-cjw7b 1/1 Running 0 20s name=hello-pod
hello-pod0-eip-e2e-test-udn-networking-38t25mij-cjw7b 1/1 Running 0 85s color=pink,name=hello-pod
hello-pod1-eip-e2e-test-udn-networking-38t25mij-cjw7b 1/1 Running 0 73s color=pink,name=hello-pod
#oc get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-pod-non-eip-e2e-test-udn-networking-38t25mij-cjw7b 1/1 Running 0 65s 10.131.0.21 worker-0 <none> <none>
hello-pod0-eip-e2e-test-udn-networking-38t25mij-cjw7b 1/1 Running 0 2m10s 10.131.0.14 worker-0 <none> <none>
hello-pod1-eip-e2e-test-udn-networking-38t25mij-cjw7b 1/1 Running 0 118s 10.129.2.8 worker-2 <none> <none>
8. from these pods, curl external agnhost service
#oc rsh hello-pod0-eip-e2e-test-udn-networking-38t25mij-cjw7b
~ $ curl 172.20.0.100:8000 --connect-timeout 2 -I
HTTP/1.1 200 OK
Date: Wed, 28 May 2025 17:40:57 GMT
Content-Length: 63
Content-Type: text/plain; charset=utf-8
~ $ exit
#oc rsh hello-pod1-eip-e2e-test-udn-networking-38t25mij-cjw7b
~ $ curl 172.20.0.100:8000 --connect-timeout 2 -I
HTTP/1.1 200 OK
Date: Wed, 28 May 2025 17:41:17 GMT
Content-Length: 63
Content-Type: text/plain; charset=utf-8
#oc rsh hello-pod-non-eip-e2e-test-udn-networking-38t25mij-cjw7b
~ $ curl 172.20.0.100:8000 --connect-timeout 2 -I
curl: (28) Connection timeout after 2002 ms
~ $ command terminated with exit code 137
Actual results: curl external agnhost service from third pod that is not using egressIP failed, although curl external agnhost service from egressIP pods all succeeded
Expected results: curl external agnhost service from all pods (egressIP pods or non-egressIP pod) should all succeed
Additional info: same test passed for SGW mode
Please fill in the following template while reporting a bug and provide as much relevant information as possible. Doing so will give us the best chance to find a prompt resolution.
Affected Platforms:
Is it an
- internal CI failure
- customer issue / SD
- internal RedHat testing failure
If it is an internal RedHat testing failure:
- Please share a kubeconfig or creds to a live cluster for the assignee to debug/troubleshoot along with reproducer steps (specially if it's a telco use case like ICNI, secondary bridges or BM+kubevirt).
If it is a CI failure:
- Did it happen in different CI lanes? If so please provide links to multiple failures with the same error instance
- Did it happen in both sdn and ovn jobs? If so please provide links to multiple failures with the same error instance
- Did it happen in other platforms (e.g. aws, azure, gcp, baremetal etc) ? If so please provide links to multiple failures with the same error instance
- When did the failure start happening? Please provide the UTC timestamp of the networking outage window from a sample failure run
- If it's a connectivity issue,
- What is the srcNode, srcIP and srcNamespace and srcPodName?
- What is the dstNode, dstIP and dstNamespace and dstPodName?
- What is the traffic path? (examples: pod2pod? pod2external?, pod2svc? pod2Node? etc)
If it is a customer / SD issue:
- Provide enough information in the bug description that Engineering doesn’t need to read the entire case history.
- Don’t presume that Engineering has access to Salesforce.
- Do presume that Engineering will access attachments through supportshell.
- Describe what each relevant attachment is intended to demonstrate (failed pods, log errors, OVS issues, etc).
- Referring to the attached must-gather, sosreport or other attachment, please provide the following details:
- If the issue is in a customer namespace then provide a namespace inspect.
- If it is a connectivity issue:
- What is the srcNode, srcNamespace, srcPodName and srcPodIP?
- What is the dstNode, dstNamespace, dstPodName and dstPodIP?
- What is the traffic path? (examples: pod2pod? pod2external?, pod2svc? pod2Node? etc)
- Please provide the UTC timestamp networking outage window from must-gather
- Please provide tcpdump pcaps taken during the outage filtered based on the above provided src/dst IPs
- If it is not a connectivity issue:
- Describe the steps taken so far to analyze the logs from networking components (cluster-network-operator, OVNK, SDN, openvswitch, ovs-configure etc) and the actual component where the issue was seen based on the attached must-gather. Please attach snippets of relevant logs around the window when problem has happened if any.
- When showing the results from commands, include the entire command in the output.
- For OCPBUGS in which the issue has been identified, label with “sbr-triaged”
- For OCPBUGS in which the issue has not been identified and needs Engineering help for root cause, label with “sbr-untriaged”
- Do not set the priority, that is owned by Engineering and will be set when the bug is evaluated
- Note: bugs that do not meet these minimum standards will be closed with label “SDN-Jira-template”
- For guidance on using this template please see
OCPBUGS Template Training for Networking components