diff --git a/tests/integration/kubernetes/gha-run.sh b/tests/integration/kubernetes/gha-run.sh index e30cf77f143e..89b1055aa488 100755 --- a/tests/integration/kubernetes/gha-run.sh +++ b/tests/integration/kubernetes/gha-run.sh @@ -436,6 +436,33 @@ function cleanup_snapshotter() { echo "::endgroup::" } +function reset_k8s_images(){ + # we are encountering the issue (https://github.com/kata-containers/kata-containers/issues/8407) + # with containerd on CI is likely due to the content digest being missing from the content store, + # which can happen when switching between different snapshotters. + # To help sort it out, we now clean up or fetch related images in k8s.io namespace. + ctr_args="" + if [ "${KUBERNETES}" = "k3s" ]; then + ctr_args="--address /run/k3s/containerd/containerd.sock " + fi + ctr_args+="--namespace k8s.io" + ctr_command="sudo -E ctr ${ctr_args}" + pause_images=$(${ctr_command} i ls | grep 'pause' | awk '{print $1}') + for image in $pause_images; do + ${ctr_command} content fetch "$image" + done + # remove related images in k8s.io namespace + images_to_remove=( + "quay.io/sjenning/nginx:1.15-alpine" + "quay.io/prometheus/busybox:latest" + "quay.io/confidential-containers/test-images:largeimage" + ) + + for image in "${images_to_remove[@]}"; do + ${ctr_command} i remove "$image" || true + done +} + function deploy_nydus_snapshotter() { echo "::group::deploy_nydus_snapshotter" ensure_yq @@ -497,6 +524,10 @@ function deploy_nydus_snapshotter() { kubectl logs "${pods_name}" -n nydus-system kubectl describe pod "${pods_name}" -n nydus-system echo "::endgroup::" + echo "::group::reset some k8s images" + sleep 10 + reset_k8s_images + echo "::endgroup::" } function cleanup_nydus_snapshotter() {