From c0c43d974139877d2362ceaf14b6522a420d6e4e Mon Sep 17 00:00:00 2001 From: Patryk Matuszak Date: Mon, 8 Jun 2026 17:17:42 +0200 Subject: [PATCH 1/2] Update OVNK flags --- assets/components/ovn/multi-node/master/daemonset.yaml | 3 ++- assets/components/ovn/single-node/master/daemonset.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/components/ovn/multi-node/master/daemonset.yaml b/assets/components/ovn/multi-node/master/daemonset.yaml index c968672326..d739afcdfe 100644 --- a/assets/components/ovn/multi-node/master/daemonset.yaml +++ b/assets/components/ovn/multi-node/master/daemonset.yaml @@ -376,7 +376,8 @@ spec: echo "I$(date "+%m%d %H:%M:%S.%N") - ovnkube-master - start ovnkube --init-master ${K8S_NODE}" exec /usr/bin/ovnkube \ - --init-master "${K8S_NODE}" \ + --init-cluster-manager "${K8S_NODE}" \ + --init-ovnkube-controller "${K8S_NODE}" \ --nb-address "{{.OVN_NB_DB_LIST}}" \ --sb-address "{{.OVN_SB_DB_LIST}}" \ --config-file=/run/ovnkube-config/ovnkube.conf \ diff --git a/assets/components/ovn/single-node/master/daemonset.yaml b/assets/components/ovn/single-node/master/daemonset.yaml index 2d698042a3..b45fb9be17 100644 --- a/assets/components/ovn/single-node/master/daemonset.yaml +++ b/assets/components/ovn/single-node/master/daemonset.yaml @@ -337,7 +337,8 @@ spec: echo "I$(date "+%m%d %H:%M:%S.%N") - ovnkube-master - start ovnkube --init-master ${K8S_NODE} --init-node ${K8S_NODE}" exec /usr/bin/ovnkube \ - --init-master "${K8S_NODE}" \ + --init-cluster-manager "${K8S_NODE}" \ + --init-ovnkube-controller "${K8S_NODE}" \ --init-node "${K8S_NODE}" \ --allow-no-uplink \ --config-file=/run/ovnkube-config/ovnkube.conf \ From 0d9f9a92360804141de42aeb331d6339a0c48655 Mon Sep 17 00:00:00 2001 From: Pablo Acevedo Montserrat Date: Wed, 15 Jul 2026 10:09:04 +0200 Subject: [PATCH 2/2] USHIFT-7267: Fix OVN stale socket race after upstream flag removal The upstream OVN-K binary removed the --nb-address/--sb-address flags, changing the connection model from TCP to unix sockets. With TCP, each connection attempt was fresh and a missing SBDB caused a clean retry. With unix sockets on a shared hostPath, the socket file persists between container restarts. If ovn-controller connects to a leftover socket from a previous SBDB instance, it caches a stale raft commit index. When the new SBDB starts fresh, ovn-controller sees the lower index as "stale data" and enters an infinite reconnect loop, blocking all pod networking. Fix this with a two-part approach: - SBDB/NBDB containers remove stale sockets before starting ovsdb-server, which then creates fresh ones. - ovn-controller waits for the fresh SBDB socket to appear before connecting, ensuring it never grabs a leftover socket. Applied to both single-node and multi-node DaemonSets. --- assets/components/ovn/multi-node/master/daemonset.yaml | 4 ++++ assets/components/ovn/multi-node/node/daemonset.yaml | 8 ++++++++ assets/components/ovn/single-node/master/daemonset.yaml | 4 ++++ assets/components/ovn/single-node/node/daemonset.yaml | 8 ++++++++ 4 files changed, 24 insertions(+) diff --git a/assets/components/ovn/multi-node/master/daemonset.yaml b/assets/components/ovn/multi-node/master/daemonset.yaml index d739afcdfe..a99c3adee8 100644 --- a/assets/components/ovn/multi-node/master/daemonset.yaml +++ b/assets/components/ovn/multi-node/master/daemonset.yaml @@ -141,6 +141,8 @@ spec: --db-nb-cluster-local-proto=tcp \ --no-monitor" + rm -f /run/ovn/ovnnb_db.sock + echo "$(date -Iseconds) - starting nbdb" exec /usr/share/ovn/scripts/ovn-ctl \ @@ -286,6 +288,8 @@ spec: --db-sb-cluster-local-proto=tcp \ --no-monitor" + rm -f /run/ovn/ovnsb_db.sock + echo "$(date -Iseconds) - starting sbdb " exec /usr/share/ovn/scripts/ovn-ctl \ ${OVN_ARGS} \ diff --git a/assets/components/ovn/multi-node/node/daemonset.yaml b/assets/components/ovn/multi-node/node/daemonset.yaml index 5c76589d34..af2cc5d3bf 100644 --- a/assets/components/ovn/multi-node/node/daemonset.yaml +++ b/assets/components/ovn/multi-node/node/daemonset.yaml @@ -55,6 +55,14 @@ spec: # K8S_NODE_IP triggers reconcilation of this daemon when node IP changes echo "$(date -Iseconds) - starting ovn-controller, Node: ${K8S_NODE} IP: ${K8S_NODE_IP}" + # Wait for the SBDB unix socket to appear. The sbdb container + # removes stale sockets and creates fresh ones on startup. + # Connecting to a stale socket would cause ovn-controller to + # cache a raft commit index higher than the fresh SBDB's. + echo "Waiting for SBDB socket..." + while [ ! -S /run/ovn/ovnsb_db.sock ]; do sleep 1; done + echo "SBDB socket ready" + exec ovn-controller unix:/var/run/openvswitch/db.sock -vfile:off \ --no-chdir --pidfile=/var/run/ovn/ovn-controller.pid \ --syslog-method="null" \ diff --git a/assets/components/ovn/single-node/master/daemonset.yaml b/assets/components/ovn/single-node/master/daemonset.yaml index b45fb9be17..a437759683 100644 --- a/assets/components/ovn/single-node/master/daemonset.yaml +++ b/assets/components/ovn/single-node/master/daemonset.yaml @@ -133,6 +133,8 @@ spec: ovn_db_file="/etc/ovn/ovn${db}_db.db" OVN_ARGS="--db-nb-cluster-local-port=9643 --no-monitor" + rm -f /run/ovn/ovnnb_db.sock + echo "$(date -Iseconds) - starting nbdb" exec /usr/share/ovn/scripts/ovn-ctl \ ${OVN_ARGS} \ @@ -251,6 +253,8 @@ spec: OVN_ARGS="--db-sb-cluster-local-port=9644 --no-monitor" + rm -f /run/ovn/ovnsb_db.sock + echo "$(date -Iseconds) - starting sbdb " exec /usr/share/ovn/scripts/ovn-ctl \ ${OVN_ARGS} \ diff --git a/assets/components/ovn/single-node/node/daemonset.yaml b/assets/components/ovn/single-node/node/daemonset.yaml index 7e7cf95137..1db2968896 100644 --- a/assets/components/ovn/single-node/node/daemonset.yaml +++ b/assets/components/ovn/single-node/node/daemonset.yaml @@ -55,6 +55,14 @@ spec: # K8S_NODE_IP triggers reconcilation of this daemon when node IP changes echo "$(date -Iseconds) - starting ovn-controller, Node: ${K8S_NODE} IP: ${K8S_NODE_IP}" + # Wait for the SBDB unix socket to appear. The sbdb container + # removes stale sockets and creates fresh ones on startup. + # Connecting to a stale socket would cause ovn-controller to + # cache a raft commit index higher than the fresh SBDB's. + echo "Waiting for SBDB socket..." + while [ ! -S /run/ovn/ovnsb_db.sock ]; do sleep 1; done + echo "SBDB socket ready" + exec ovn-controller unix:/var/run/openvswitch/db.sock -vfile:off \ --no-chdir --pidfile=/var/run/ovn/ovn-controller.pid \ --syslog-method="null" \