Skip to content

kvm2 driver cannot connect to Docker registry on Fedora 41/42, while qemu2 works #20977

Open
@OdedViner

Description

@OdedViner

What Happened?

On Fedora 42, Minikube using the kvm2 driver fails to connect to external image registries such as Docker Hub. When switching to the qemu2 driver, the issue is resolved.

Minikube with kvm2:

$ minikube start --disk-size=10g --extra-disks=1 --driver=kvm2
😄  minikube v1.34.0 on Fedora 42
    ▪ KUBECONFIG=/home/oviner/ClusterPath/auth/kubeconfig
✨  Using the kvm2 driver based on user configuration
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🔥  Creating kvm2 VM (CPUs=2, Memory=6000MB, Disk=10240MB) ...
❗  Failing to connect to https://registry.k8s.io/ from inside the minikube VM
💡  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
🐳  Preparing Kubernetes v1.31.0 on Docker 27.2.0 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔗  Configuring bridge CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

[curl failed]
$ minikube ssh
$  curl -I https://registry-1.docker.io/v2/ 
^C

Minikube with qemu2:

$ minikube start --disk-size=10g --extra-disks=1 --driver=qemu2
😄  minikube v1.34.0 on Fedora 42
    ▪ KUBECONFIG=/home/oviner/ClusterPath/auth/kubeconfig
✨  Using the qemu2 driver based on user configuration
🌐  Automatically selected the builtin network
❗  You are using the QEMU driver without a dedicated network, which doesn't support `minikube service` & `minikube tunnel` commands.
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🔥  Creating qemu2 VM (CPUs=2, Memory=6000MB, Disk=10240MB) ...
🐳  Preparing Kubernetes v1.31.0 on Docker 27.2.0 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔗  Configuring bridge CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

$ minikube ssh
$ curl -I https://registry-1.docker.io/v2/ 
HTTP/1.1 401 Unauthorized
content-type: application/json
docker-distribution-api-version: registry/2.0
www-authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io"
date: Mon, 23 Jun 2025 15:06:15 GMT
content-length: 87
strict-transport-security: max-age=31536000

Additional Info

  • Minikube version: v1.34.0
  • Fedora version: 42
  • Kubernetes version: v1.31.0
  • Docker inside Minikube: 27.2.0
  • No custom proxy configuration
  • qemu2 works fine, while kvm2 fails consistently with networking timeout

Expected Behavior
kvm2 driver should be able to access external registries without networking failures.

Workaround
Switching to the --driver=qemu2

log.txt

flag resolves the issue.

Attach the log file

Workaround
Switching to the --driver=qemu2

Operating System

Redhat/Fedora

Driver

KVM2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions