diff --git a/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2 b/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2
index 0d9a25b4472dae85992500245a06b5685933cce1..9fec45fdd6e234eca8b8646685d38bd35d566e8d 100644
--- a/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2
+++ b/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2
@@ -19,3 +19,10 @@ kolla_openstack_logging_debug: true
 # Use the CI infra's PyPI mirror.
 pip_local_mirror: true
 pip_index_url: "http://{{ zuul_site_mirror_fqdn }}/pypi/simple"
+
+# NOTE(mgoddard): CentOS 8 removes interfaces from their bridge during ifdown,
+# and removes the bridge if there are no interfaces left. When Kayobe bounces
+# veth links plugged into the bridge, it causes the bridge which has the IP we
+# are using for SSH to be removed. Use a dummy interface.
+aio_bridge_ports:
+  - dummy1
diff --git a/playbooks/kayobe-overcloud-upgrade-base/pre.yml b/playbooks/kayobe-overcloud-upgrade-base/pre.yml
index 7809b50bc255963c9e528a13d5a23f65a670af2d..cefbe5df2a999917d7e1aee316b287250ea716df 100644
--- a/playbooks/kayobe-overcloud-upgrade-base/pre.yml
+++ b/playbooks/kayobe-overcloud-upgrade-base/pre.yml
@@ -19,3 +19,11 @@
         - "ip l add breth1 type bridge"
         - "ip l set breth1 up"
         - "ip a add 192.168.33.3/24 dev breth1"
+        # NOTE(mgoddard): CentOS 8 removes interfaces from their bridge during
+        # ifdown, and removes the bridge if there are no interfaces left. When
+        # Kayobe bounces veth links plugged into the bridge, it causes the
+        # bridge which has the IP we are using for SSH to be removed. Use a
+        # dummy interface.
+        - "ip l add dummy1 type dummy"
+        - "ip l set dummy1 up"
+        - "ip l set dummy1 master breth1"
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 5b059ae2d9e5aaa8b2061c8d2cd3c9dc97350cdc..0dcbef32e5473f3ab929de5b4c2bbf028deee98a 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -11,8 +11,7 @@
         - kayobe-tox-ansible
         - kayobe-tox-molecule
         - kayobe-overcloud-centos8
-        # TODO(mgoddard): Enable upgrade jobs when CentOS 8 support in Train.
-        # - kayobe-overcloud-upgrade-centos8
+        - kayobe-overcloud-upgrade-centos8
         - kayobe-seed-centos8
         # TODO(mgoddard): Enable upgrade jobs when CentOS 8 support in Train.
         # - kayobe-seed-upgrade-centos8
@@ -24,8 +23,7 @@
         - kayobe-tox-ansible
         - kayobe-tox-molecule
         - kayobe-overcloud-centos8
-        # TODO(mgoddard): Enable upgrade jobs when CentOS 8 support in Train.
-        # - kayobe-overcloud-upgrade-centos8
+        - kayobe-overcloud-upgrade-centos8
         - kayobe-seed-centos8
         # TODO(mgoddard): Enable upgrade jobs when CentOS 8 support in Train.
-        # - kayobe-seed-upgrade-centos
+        # - kayobe-seed-upgrade-centos8