Spring Cloud Kubernetes app无法启动:

bn31dyow  于 5个月前  发布在  Spring
关注(0)|答案(2)|浏览(44)

我有一个简单的应用程序,带有spring Boot EKS with kubernetes JDK 17 spring- Boot -starter-parent 3.1.3 spring-cloud-dependencies spring-cloud-starter-kubernetes-fabric 8-config spring-cloud-starter-bootstrap

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 2 of method configMapPropertyChangeEventWatcher in org.springframework.cloud.kubernetes.fabric8.config.reload.Fabric8ConfigReloadAutoConfiguration required a single bean,
 but 2 were found:
    - configDataConfigMapPropertySourceLocator: a programmatically registered singleton 
    - configMapPropertySourceLocator: defined by method 'configMapPropertySourceLocator' 
    in class path resource [org/springframework/cloud/kubernetes/fabric8/config/Fabric8BootstrapConfiguration.class]

Action:

Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
","context":"default"}

字符串
bootstrap.properties:

spring.cloud.bootstrap.enabled=true
spring.main.cloud-platform=KUBERNETES
spring.cloud.kubernetes.discovery.enabled=false
spring.cloud.kubernetes.config.enabled=true
spring.cloud.kubernetes.reload.enabled=true
spring.cloud.kubernetes.secrets.enabled=true
spring.cloud.kubernetes.reload.monitoring-secrets=true


application.properties

spring.application.name=demo
spring.main.allow-bean-definition-overriding=true
spring.cloud.bootstrap.enabled=true
spring.main.cloud-platform=KUBERNETES


有人知道我错过了什么吗?

iswrvxsc

iswrvxsc1#

spring-cloud-kubernetes贡献者
您同时使用 * 配置数据API和 Bootstrap ,因此创建了2个bean,而预期只有一个。
我的意思是,你有:application.properties中的spring.config.import:kubernetes(这被称为“配置数据API”,是“ Bootstrap ”的现代替代品,更多细节请参见this
与此同时,您还启用了引导:您在类路径上设置了spring-cloud-starter-bootstrap,或者设置为:spring.cloud.bootstrap.enabled=true
因为这两个都配置了,所以每个都会创建一个@Bean,但是我们只需要一个。所以禁用其中一个。

nhaq1z21

nhaq1z212#

在我的情况下,这并不像@尤金建议的那样简单,除非我还缺少一些东西。
我从我的应用程序中删除了bootstrap.properties文件,并替换为application.properties文件,遵循所谓的“配置数据API”,然后我在这里描述的问题中结束,我也在Spring application fails to start because Fabric8ConfigReloadAutoConfiguration required a single bean but 2 were found中报告了这个问题。
然后我发出了上面的问题,最后我在这个问题中结束了。根据@尤金的建议,我意识到我的项目中用于管理依赖关系的pom包含spring-cloud-starter-bootstrap,所以我从我的应用程序中排除了它。然后我有一个新的问题:

Parameter 0 of method kubernetesHealthIndicator in 
org.springframework.cloud.kubernetes.fabric8.Fabric8ActuatorConfiguration
required a bean of type 'org.springframework.cloud.kubernetes.commons.PodUtils'
that could not be found.

Action:

Consider defining a bean of type 'org.springframework.cloud.kubernetes.commons.PodUtils'
in your configuration

字符串
当然,我已经检查过,我没有任何其他属性激活 Bootstrap 。所以似乎我不能那么容易摆脱spring-cloud-starter-bootstrap。我会编辑这个答案,以防我有新的发现,他们可以任何帮助。

相关问题