diff --git a/roles/collect-kubernetes-logs/tasks/main.yaml b/roles/collect-kubernetes-logs/tasks/main.yaml
index 9dc8acec1..ffc68f23f 100755
--- a/roles/collect-kubernetes-logs/tasks/main.yaml
+++ b/roles/collect-kubernetes-logs/tasks/main.yaml
@@ -42,3 +42,19 @@
     dest: "{{ ansible_user_dir }}/zuul-output/logs/kubelet"
     mode: u=rwX,g=rX,o=rX
     recurse: yes
+
+- name: Collect microk8s inspect tarball
+  shell: |
+    set -x -o pipefail
+    # The microk8s snap isnt in path by default on debian (it is on ubuntu)
+    export PATH=/snap/bin:$PATH
+    if type -p microk8s ; then
+      mkdir {{ ansible_user_dir }}/zuul-output/logs/microk8s
+      INSPECT_TARBALL="$(microk8s inspect | tee {{ ansible_user_dir }}/zuul-output/logs/microk8s/inspect.log | grep '  Report tarball is at' | cut -d' ' -f7)"
+      if [[ -n "$INSPECT_TARBALL" ]] ; then
+        cp $INSPECT_TARBALL {{ ansible_user_dir }}/zuul-output/logs/microk8s/
+      fi
+    fi
+  args:
+    executable: /bin/bash
+  failed_when: false
diff --git a/roles/ensure-kubernetes/defaults/main.yaml b/roles/ensure-kubernetes/defaults/main.yaml
index 52e6abd11..6f9116a94 100644
--- a/roles/ensure-kubernetes/defaults/main.yaml
+++ b/roles/ensure-kubernetes/defaults/main.yaml
@@ -1,7 +1,5 @@
 ensure_kubernetes_type: minikube
-# Pin to 1.28 until https://github.com/canonical/microk8s/issues/4361
-# is fixed.
-ensure_kubernetes_microk8s_channel: '1.28/stable'
+ensure_kubernetes_microk8s_channel: '1.31/stable'
 # NOTE(ianw) : 2022-12-13
 #  - "storage" is deprecated and has become "hostpath-storage" in
 #     >1.24, but we still need to support 1.23.  If it really goes away
diff --git a/roles/ensure-kubernetes/tasks/microk8s.yaml b/roles/ensure-kubernetes/tasks/microk8s.yaml
index 45d6f218b..ef73a9a6b 100644
--- a/roles/ensure-kubernetes/tasks/microk8s.yaml
+++ b/roles/ensure-kubernetes/tasks/microk8s.yaml
@@ -13,6 +13,10 @@
   become: yes
   command: 'snap install microk8s --classic --channel={{ ensure_kubernetes_microk8s_channel }}'
 
+- name: Wait for kubernetes to be ready before adding add-ons
+  become: yes
+  command: '/snap/bin/microk8s status --wait-ready'
+
 - name: Install add-ons
   become: yes
   command: '/snap/bin/microk8s enable {{ ensure_kubernetes_microk8s_addons | join(" ") }}'
diff --git a/zuul-tests.d/container-roles-jobs.yaml b/zuul-tests.d/container-roles-jobs.yaml
index 29fe2b85b..bc3dffffc 100644
--- a/zuul-tests.d/container-roles-jobs.yaml
+++ b/zuul-tests.d/container-roles-jobs.yaml
@@ -385,6 +385,8 @@
     # Does not work under ubuntu-bionic
     abstract: true
     files:
+      - roles/collect-container-logs/.*
+      - roles/collect-kubernetes-logs/.*
       - roles/ensure-docker/.*
       - roles/ensure-kubernetes/.*
       - roles/ensure-package-repositories/.*
@@ -412,6 +414,8 @@
     # Requires at least ubuntu-noble
     abstract: true
     files:
+      - roles/collect-container-logs/.*
+      - roles/collect-kubernetes-logs/.*
       - roles/ensure-docker/.*
       - roles/ensure-kubernetes/.*
       - roles/ensure-package-repositories/.*
@@ -438,6 +442,8 @@
       roles in the zuul-jobs repo.
     abstract: true
     files:
+      - roles/collect-container-logs/.*
+      - roles/collect-kubernetes-logs/.*
       - roles/ensure-docker/.*
       - roles/ensure-kubernetes/.*
       - roles/ensure-package-repositories/.*