Quarkus项目构建时quarkus-maven-plugin报Kubernetes相关错误如何解决?
告警信息:
[WARNING] Error reading service account token from: [/var/run/secrets/kubernetes.io/serviceaccount/token]. Ignoring错误信息:
[error]: Build step io.quarkus.kubernetes.deployment.KubernetesDeployer#deploy threw an exception: java.lang.RuntimeException: 无法完成Kubernetes部署,与Kubernetes API Server地址https://kubernetes.default.svc/ 通信异常
问题原因
该错误本质是Quarkus构建流程中自动执行了Kubernetes部署步骤,而本地环境无法对接Kubernetes集群导致的,具体可分为以下几类:
- 项目引入了
quarkus-kubernetes、quarkus-container-image-jib等自带部署能力的扩展,默认配置下构建阶段会自动触发向Kubernetes集群部署应用的逻辑,无需额外手动触发 - 本地无可用的Kubernetes运行环境:未启动minikube、k3s、Docker Desktop内置Kubernetes集群等本地K8s环境,Quarkus找不到可对接的集群节点,既无法读取ServiceAccount令牌,也无法解析
kubernetes.default.svc这个集群内部域名 - 本地Kubernetes上下文配置异常:如果已安装本地K8s环境,但kubectl当前指向的上下文是不可达的远程集群,或集群认证信息已过期,也会触发API Server通信异常
- 未显式关闭非必要的自动部署逻辑:未在应用配置或Maven插件配置中关闭本地构建时的自动部署步骤,导致不需要的部署逻辑被强制执行
对应解决方法
- 临时关闭单次构建的部署逻辑:执行Maven构建命令时添加参数
-Dquarkus.kubernetes.deploy=false - 永久关闭本地默认部署:在
src/main/resources/application.properties中添加配置quarkus.kubernetes.deploy=false,需要部署到Kubernetes集群时再临时添加参数开启即可 - 确认本地集群可用:如果确实需要本地部署到K8s,先执行
kubectl cluster-info检查本地集群运行状态、上下文配置是否正确
内容的提问来源于stack exchange,提问作者Tapani Rundgren
相关产品推荐
相关产品推荐

