You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2026/09/03 19:00:39 UTC
(spark) branch master updated: [SPARK-59212][K8S][INFRA] Pin the Minikube container runtime to `docker` in K8s CI
This is an automated email from the ASF dual-hosted git repository.
dongjoon-hyun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 680855bea739 [SPARK-59212][K8S][INFRA] Pin the Minikube container runtime to `docker` in K8s CI
680855bea739 is described below
commit 680855bea7393b383a77f1711fe640cb7fad604b
Author: Ramon Zhou <de...@gmail.com>
AuthorDate: Thu Sep 3 12:00:27 2026 -0700
[SPARK-59212][K8S][INFRA] Pin the Minikube container runtime to `docker` in K8s CI
### What changes were proposed in this pull request?
Pass `container-runtime: docker` to both `medyagh/setup-minikube` steps in
`.github/workflows/build_and_test.yml` -- the `k8s-integration-tests` job and the
`oidc-e2e` job -- so the Minikube node's container runtime is chosen explicitly instead of
inherited from the Minikube default.
### Why are the changes needed?
The K8s integration test job currently fails for every PR, during image construction.
[Minikube 1.39.0](https://github.com/kubernetes/minikube/releases/tag/v1.39.0) changed the
default container runtime from Docker to containerd
([kubernetes/minikube#23562](https://github.com/kubernetes/minikube/pull/23562)). Both jobs
pin `setup-minikube` by SHA but leave `minikube-version` at the action's default of
`latest`, so CI picked up 1.39.0 as soon as it was released and the node now comes up on
containerd:
```
* minikube v1.39.0 on Ubuntu 24.04
* Automatically selected the docker driver.
* Preparing Kubernetes v1.37.0 on containerd 2.3.4 ...
Container Runtime Version: containerd://2.3.4
```
Both jobs then build images through `eval $(minikube docker-env)`, which now points at
containerd's Docker shim rather than a real Docker daemon:
```
! Using the docker-env command with the containerd runtime is a highly experimental
feature, please provide feedback or contribute to make it better
```
That shim does not implement enough of the Docker API for buildx. Because the pointed-at
endpoint is not a usable Docker daemon, buildx falls back to the `docker-container` driver,
and bootstrapping BuildKit inside it fails:
```
#0 building with "default" instance using docker-container driver
#1 [internal] booting buildkit
#1 pulling image moby/buildkit:buildx-stable-1 2.7s done
#1 ERROR: failed to inspect pulled image moby/buildkit:buildx-stable-1: Error response from daemon: 404 page not found
ERROR: failed to build: failed to inspect pulled image moby/buildkit:buildx-stable-1: Error response from daemon: 404 page not found
[error] (kubernetes-integration-tests / dockerImgs) java.lang.IllegalStateException: Process ... exited with code 1
```
Minikube 1.38.1 still defaults to the Docker runtime and passes; 1.39.0 fails consistently.
`container-runtime: docker` is the fix rather than pinning `minikube-version`, because it
addresses the cause and does not freeze CI on an aging Minikube. The Docker runtime remains
fully supported in 1.39.0 -- that release ships cri-dockerd v0.4.3 and includes a
cri-dockerd fix specifically for Kubernetes v1.36+
([kubernetes/minikube#22921](https://github.com/kubernetes/minikube/pull/22921)) -- so
`docker` stays a valid choice for the Kubernetes versions these two jobs use (1.37.0 and
1.36.0). Runners are x86_64, which cri-dockerd supports.
Fixing only `k8s-integration-tests` would leave `oidc-e2e` broken, since it builds its
image the same way; both steps are updated.
### Does this PR introduce _any_ user-facing change?
No. This is a CI-only change.
### How was this patch tested?
By CI in this PR. This change touches only `.github`, which `dev/is-changed.py` maps to the
`root` module, so both `k8s-integration-tests` and `oidc-e2e` run here and exercise the
image build path that was failing.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 5)
Closes #58502 from RamonZhou/SPARK-59212-minikube-docker-runtime.
Authored-by: Ramon Zhou <de...@gmail.com>
Signed-off-by: Dongjoon Hyun <do...@apache.org>
---
.github/workflows/build_and_test.yml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index b78b3ede451f..6fe395279951 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -1428,6 +1428,10 @@ jobs:
uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21
with:
kubernetes-version: "1.37.0"
+ # Minikube 1.39.0 changed the default container runtime to containerd. The image
+ # builds below go through `minikube docker-env`, which needs a real Docker daemon
+ # in the node, so pin the runtime rather than inherit the default.
+ container-runtime: docker
# GitHub Actions limit 4C/16G, limit to 2C/6G for better resource statistic
# https://docs.github.com/en/actions/reference/runners/github-hosted-runners#standard-github-hosted-runners-for-public-repositories
cpus: 2
@@ -1522,6 +1526,10 @@ jobs:
uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21
with:
kubernetes-version: "1.36.0"
+ # Minikube 1.39.0 changed the default container runtime to containerd. The image
+ # builds below go through `minikube docker-env`, which needs a real Docker daemon
+ # in the node, so pin the runtime rather than inherit the default.
+ container-runtime: docker
cpus: 2
memory: 6144m
- name: Print K8S pods and nodes info
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org