quarkusio/quarkus · error · RuntimeException
The container with the label '" + DEV_SERVICE_LABEL + "' is
Error message
The container with the label '" + DEV_SERVICE_LABEL + "' is not compatible with Dev Services for Kubernetes. Stop it or disable Dev Services for Kubernetes.
What it means
Dev Services for Kubernetes starts (or reuses) a container labeled with its DEV_SERVICE_LABEL, which must be a supported local cluster image (kind, or a kube-apiserver image). If a container carrying that label exists but has an unrecognized image, the kubeconfig cannot be extracted, so this RuntimeException is thrown.
Source
Thrown at extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/DevServicesKubernetesProcessor.java:482
private KubeConfig getKubeconfigFromContainer() {
var image = getContainerInfo().getConfig().getImage();
String connectionAddress = resolvedConnectionAddress();
if (image.contains("rancher/k3s")) {
return KubeConfigUtils
.parseKubeConfig(KubeConfigUtils.replaceServerInKubeconfig("https://" + connectionAddress,
getFileContentFromContainer(K3S_KUBECONFIG)));
} else if (image.contains("kindest/node")) {
return KubeConfigUtils
.parseKubeConfig(KubeConfigUtils.replaceServerInKubeconfig("https://" + connectionAddress,
getFileContentFromContainer(KIND_KUBECONFIG)));
} else if (image.contains("k8s.gcr.io/kube-apiserver") ||
image.contains("registry.k8s.io/kube-apiserver")) {
return getKubeconfigFromApiContainer(connectionAddress);
}
// this can happen only if the user manually start
// a DEV_SERVICE_LABEL labeled container with an invalid image name
throw new RuntimeException("The container with the label '" + DEV_SERVICE_LABEL
+ "' is not compatible with Dev Services for Kubernetes. Stop it or disable Dev Services for Kubernetes.");
}
public Map<String, String> getKubeconfig() {
return getKubernetesClientConfigFromKubeConfig(getKubeconfigFromContainer());
}
protected KubeConfig getKubeconfigFromApiContainer(final String url) {
final Cluster cluster = new Cluster();
cluster.setName(APISERVER);
cluster.setCluster(new ClusterSpec());
cluster.getCluster().setServer(url);
cluster.getCluster().setCertificateAuthorityData((base64(getFileContentFromContainer(API_SERVER_CA))));
final User user = new User();
user.setName(APISERVER);
user.setUser(new UserSpec());
user.getUser().setClientKeyData(base64(getFileContentFromContainer(API_SERVER_KEY)));
user.getUser().setClientCertificateData(base64(getFileContentFromContainer(API_SERVER_CERT)));View on GitHub (pinned to e1c734241f)
Solutions
- Stop and remove the offending container: docker ps --filter label=<DEV_SERVICE_LABEL> then docker rm -f <container>.
- Disable Dev Services for Kubernetes (quarkus.kubernetes-client.devservices.enabled=false) if you manage your own cluster.
- Restart Docker/Podman and let Dev Services recreate a proper kind container on the next build/test run.
Example fix
// before docker run -l quarkus-dev-service.kubernetes my-random-image // breaks discovery // after docker rm -f my-random-container quarkus.kubernetes-client.devservices.enabled=false // or let Dev Services start kind itself
Defensive patterns
Strategy: validation
Validate before calling
// Find labeled containers and verify their image before relying on Dev Services
for (Container c : dockerClient.listContainers()) {
for (String lbl : c.getLabels().keySet()) {
if (lbl.startsWith("quarkus-dev-service.kubernetes")) {
if (!c.getImage().contains("kindest/node")
&& !c.getImage().contains("registry.k8s.io/kube-apiserver")) {
throw new IllegalStateException("Incompatible labeled container: " + c.getId()
+ " image=" + c.getImage() + " — remove it or disable dev services");
}
}
}
} Try / catch
try {
runTests();
} catch (RuntimeException e) {
if (e.getMessage().contains("not compatible with Dev Services for Kubernetes")) {
exec("docker", "ps", "-q", "--filter", "label=quarkus-dev-service.kubernetes")
.forEach(id -> exec("docker", "rm", "-f", id));
runTests();
} else { throw e; }
} Prevention
- Never manually attach the quarkus dev-service label to your own containers.
- Set quarkus.kubernetes-client.devservices.enabled=false when managing your own local cluster.
- Periodically prune stale dev-service containers (docker container prune / targeted rm).
When it happens
Trigger: A Docker/Podman container with the Dev Services for Kubernetes label exists whose image is neither the expected kind image nor registry.k8s.io/kube-apiserver — typically because the user manually started or relabeled such a container.
Common situations: User manually ran a container with the quarkus dev-service label; leftover/renamed containers from a previous Quarkus version; label applied via docker-compose or custom scripts.
Related errors
- Resource not found: " + manifestPath
- Dev services for ${request.getName()} requires a startable s
- name cannot be null
- Could not find builder image '${effectiveBuilderImage}' loca
- Failed to check status of builder image '${effectiveBuilderI
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/829cbf60c49bb5a2.
Report an issue: GitHub.