jaggerwang commented on issue #4489:
URL: https://github.com/apache/shenyu/issues/4489#issuecomment-1525199747
Same isue. I'm just using Kubernetes Service to dispath request to some pod,
not using any register service like nacos, consul, eureka etc. When I start
bootstrap service in Kubernetes, it failed with error "Parameter 0 of method
nacosDiscoveryHealthIndicator in
com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration
required a bean of type 'com.alibaba.cloud.nacos.NacosServiceManager' that
could not be found.", I've already disabled `spring.cloud.discovery`.
**configmap**
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: $APP_NAME
data:
application.yml: |
server:
port: 9195
address: 0.0.0.0
logging:
level:
root: info
org.springframework.boot: info
org.apache.ibatis: info
org.apache.shenyu.bonuspoint: info
org.apache.shenyu.lottery: info
org.apache.shenyu: info
spring:
application:
name: opengateway
main:
allow-bean-definition-overriding: true
allow-circular-references: true
codec:
max-in-memory-size: 2MB
cloud:
discovery:
enabled: false
management:
endpoints:
web:
exposure:
include: "health,metrics,prometheus"
# 非 Kubernetes 环境也开启健康探针,以便本地调试
endpoint:
health:
probes:
enabled: true
# 只对 Kubernetes 环境有效
health:
readinessstate:
enabled: true
livenessstate:
enabled: true
metrics:
tags:
application: basicai-opengateway
shenyu:
sync:
websocket:
urls: ws://opengateway-admin:9095/websocket
allowOrigin: ws://opengateway:9195
```
**deployment**
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: $APP_NAME
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/name: basicai
app.kubernetes.io/instance: basicai
app.kubernetes.io/component: $APP_NAME
template:
metadata:
labels:
app.kubernetes.io/name: basicai
app.kubernetes.io/instance: basicai
app.kubernetes.io/component: $APP_NAME
spec:
nodeSelector:
dedicated: app
# 提前准备好拉取镜像的凭证
imagePullSecrets:
- name: basicai-registry
containers:
- name: $APP_NAME
image: $IMAGE
resources:
requests:
memory: 200Mi
cpu: 10m
limits:
memory: 2Gi
cpu: 1
ports:
- name: http
containerPort: 9195
# 启动探针,会尝试多次,如果失败将重启服务
startupProbe:
httpGet:
path: /actuator/health/liveness
port: 9195
periodSeconds: 10
failureThreshold: 6
# 存活探针,会尝试多次,如果失败将重启服务
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 9195
periodSeconds: 10
failureThreshold: 3
# 就绪探针,如果失败将拒绝服务
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 9195
initialDelaySeconds: 10
periodSeconds: 10
volumeMounts:
- name: config
subPath: application.yml
mountPath: /opt/shenyu-bootstrap/conf/application.yml
volumes:
- name: config
configMap:
name: $APP_NAME
---
apiVersion: v1
kind: Service
metadata:
name: $APP_NAME
spec:
selector:
app.kubernetes.io/name: basicai
app.kubernetes.io/instance: basicai
app.kubernetes.io/component: $APP_NAME
ports:
- name: http
port: 80
targetPort: 9195
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: $APP_NAME
spec:
ingressClassName: nginx
rules:
- host: open.alidev.beisai.com
http:
paths:
- backend:
service:
name: $APP_NAME
port:
number: 80
path: /api(/|$)(.*)
pathType: Prefix
tls:
- hosts:
- open.alidev.beisai.com
secretName: alidev.beisai.com
```
**logs**
```
Use default jvm options: -server -Xmx2g -Xms2g -Xmn1g -Xss512k
-XX:+DisableExplicitGC -XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods -XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
Starting the Apache ShenYu Bootstrap ...
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:/opt/shenyu-bootstrap/lib/logback-classic-1.2.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in
[jar:file:/opt/shenyu-bootstrap/lib/tencentcloud-cls-sdk-java-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
explanation.
08:43:56,035 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could
NOT find resource [logback-test.xml]
08:43:56,035 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found
resource [logback.xml] at [file:/opt/shenyu-bootstrap/conf/logback.xml]
08:43:56,308 |-INFO in
ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not
set
08:43:56,310 |-INFO in ch.qos.logback.core.joran.action.ShutdownHookAction -
About to instantiate shutdown hook of type
[ch.qos.logback.core.hook.DelayingShutdownHook]
08:43:56,323 |-INFO in ch.qos.logback.core.joran.action.StatusListenerAction
- Added status listener of type
[ch.qos.logback.core.status.OnConsoleStatusListener]
08:43:56,420 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
08:43:56,426 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
Naming appender as [STDOUT]
08:43:56,435 |-INFO in
ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default
type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder]
property
08:43:56,531 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
08:43:56,534 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
Naming appender as [ASYNC_STDOUT]
08:43:56,536 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction -
Attaching appender named [STDOUT] to
ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT]
08:43:56,536 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT] -
Attaching appender named [STDOUT] to AsyncAppender.
08:43:56,537 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT] -
Setting discardingThreshold to 0
08:43:56,538 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction
- Setting level of ROOT logger to INFO
08:43:56,538 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction -
Attaching appender named [ASYNC_STDOUT] to Logger[ROOT]
08:43:56,539 |-INFO in
ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
08:43:56,540 |-INFO in
ch.qos.logback.classic.joran.JoranConfigurator@1efee8e7 - Registering current
configuration as safe fallback point
SLF4J: Actual binding is of type
[ch.qos.logback.classic.util.ContextSelectorStaticBinder]
08:43:58,500 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT] -
Worker thread will flush remaining events before exiting.
08:43:58,501 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT] -
Queue flush finished successfully within timeout.
08:43:58,511 |-INFO in
ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not
set
08:43:58,512 |-INFO in ch.qos.logback.core.joran.action.ShutdownHookAction -
About to instantiate shutdown hook of type
[ch.qos.logback.core.hook.DelayingShutdownHook]
08:43:58,512 |-INFO in ch.qos.logback.core.joran.action.StatusListenerAction
- Added status listener of type
[ch.qos.logback.core.status.OnConsoleStatusListener]
08:43:58,512 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
08:43:58,512 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
Naming appender as [STDOUT]
08:43:58,513 |-INFO in
ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default
type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder]
property
08:43:58,514 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
08:43:58,514 |-INFO in ch.qos.logback.core.joran.action.AppenderAction -
Naming appender as [ASYNC_STDOUT]
08:43:58,515 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction -
Attaching appender named [STDOUT] to
ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT]
08:43:58,515 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT] -
Attaching appender named [STDOUT] to AsyncAppender.
08:43:58,515 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNC_STDOUT] -
Setting discardingThreshold to 0
08:43:58,515 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction
- Setting level of ROOT logger to INFO
08:43:58,516 |-INFO in
ch.qos.logback.classic.jul.LevelChangePropagator@66c61024 - Propagating INFO
level on Logger[ROOT] onto the JUL framework
08:43:58,517 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction -
Attaching appender named [ASYNC_STDOUT] to Logger[ROOT]
08:43:58,517 |-INFO in
ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
08:43:58,517 |-INFO in
org.springframework.boot.logging.logback.SpringBootJoranConfigurator@3adcc812 -
Registering current configuration as safe fallback point
08:43:58,607 |-INFO in
ch.qos.logback.classic.jul.LevelChangePropagator@66c61024 - Propagating INFO
level on Logger[org.springframework.boot] onto the JUL framework
08:43:58,608 |-INFO in
ch.qos.logback.classic.jul.LevelChangePropagator@66c61024 - Propagating INFO
level on Logger[org.apache.ibatis] onto the JUL framework
08:43:58,608 |-INFO in
ch.qos.logback.classic.jul.LevelChangePropagator@66c61024 - Propagating INFO
level on Logger[org.apache.shenyu.bonuspoint] onto the JUL framework
08:43:58,608 |-INFO in
ch.qos.logback.classic.jul.LevelChangePropagator@66c61024 - Propagating INFO
level on Logger[org.apache.shenyu.lottery] onto the JUL framework
08:43:58,608 |-INFO in
ch.qos.logback.classic.jul.LevelChangePropagator@66c61024 - Propagating INFO
level on Logger[org.apache.shenyu] onto the JUL framework
2023-04-27 08:43:58 [main] INFO org.apache.shenyu.web.logo.ShenyuLogo -
_____ _
/ ____| |
| (___ | |__ ___ _ __ _ _ _ _
\___ \| '_ \ / _ \ '_ \| | | | | | |
____) | | | | __/ | | | |_| | |_| |
|_____/|_| |_|\___|_| |_|\__, |\__,_|
__/ |
|___/
:: Shenyu :: (v2.5.1)
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.8)
2023-04-27 08:43:59 [main] INFO
org.apache.shenyu.bootstrap.ShenyuBootstrapApplication - Starting
ShenyuBootstrapApplication v2.5.1 using Java 1.8.0_212 on
opengateway-88cd7bb46-fdb8x with PID 1
(/opt/shenyu-bootstrap/lib/shenyu-bootstrap-2.5.1.jar started by root in
/opt/shenyu-bootstrap)
2023-04-27 08:43:59 [main] INFO
org.apache.shenyu.bootstrap.ShenyuBootstrapApplication - No active profile set,
falling back to 1 default profile: "default"
2023-04-27 08:44:03 [main] INFO
org.springframework.data.repository.config.RepositoryConfigurationDelegate -
Multiple Spring Data modules found, entering strict repository configuration
mode!
2023-04-27 08:44:03 [main] INFO
org.springframework.data.repository.config.RepositoryConfigurationDelegate -
Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2023-04-27 08:44:03 [main] INFO
org.springframework.data.repository.config.RepositoryConfigurationDelegate -
Finished Spring Data repository scanning in 12 ms. Found 0 Redis repository
interfaces.
2023-04-27 08:44:05 [main] INFO
org.springframework.cloud.context.scope.GenericScope - BeanFactory
id=ee8f65ba-1d25-3ea6-ae2a-db7fefcf8a8d
2023-04-27 08:44:05 [main] INFO
org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker
- Bean
'com.baidu.cloud.starlight.springcloud.client.StarlightClientAutoConfiguration'
of type
[com.baidu.cloud.starlight.springcloud.client.StarlightClientAutoConfiguration$$EnhancerBySpringCGLIB$$d4b4e3df]
is not eligible for getting processed by all BeanPostProcessors (for example:
not eligible for auto-proxying)
2023-04-27 08:44:05 [main] INFO
org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker
- Bean
'org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration'
of type
[org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration]
is not eligible for getting processed by all BeanPostProcessors (for example:
not eligible for auto-proxying)
2023-04-27 08:44:05 [main] INFO
org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker
- Bean
'org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration$ReactorDeferringLoadBalancerFilterConfig'
of type
[org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration$ReactorDeferringLoadBalancerFilterConfig]
is not eligible for getting processed by all BeanPostProcessors (for example:
not eligible for auto-proxying)
2023-04-27 08:44:05 [main] INFO
org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker
- Bean 'reactorDeferringLoadBalancerExchangeFilterFunction' of type
[org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction]
is not eligible for getting processed by all BeanPostProcessors (for example:
not eligible for auto-proxying)
2023-04-27 08:44:10 [main] WARN
com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as
dynamic configuration sources.
2023-04-27 08:44:10 [main] INFO
com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic
configuration sources, define System property
archaius.configurationSource.additionalUrls or make config.properties available
on classpath.
2023-04-27 08:44:10 [main] WARN
com.netflix.config.sources.URLConfigurationSource - No URLs will be polled as
dynamic configuration sources.
2023-04-27 08:44:10 [main] INFO
com.netflix.config.sources.URLConfigurationSource - To enable URLs as dynamic
configuration sources, define System property
archaius.configurationSource.additionalUrls or make config.properties available
on classpath.
2023-04-27 08:44:11 [main] WARN
org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext
- Exception encountered during context initialization - cancelling refresh
attempt: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'webHandler' defined in class path resource
[org/apache/shenyu/springboot/starter/gateway/ShenyuConfiguration.class]: Bean
instantiation via factory method failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to instantiate
[org.apache.shenyu.web.handler.ShenyuWebHandler]: Factory method
'shenyuWebHandler' threw exception; nested exception is
org.springframework.beans.factory.UnsatisfiedDependencyException: Error
creating bean with name 'redirectPlugin' defined in class path resource
[org/apache/shenyu/springboot/starter/plugin/redirect/RedirectPluginConfiguration.class]:
Unsatisfied dependency expressed through method 'redirectPlugin' parameter 0;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dispatcherHandler' defined in class path
resource
[org/apache/shenyu/springboot/starter/gateway/ShenyuConfiguration.class]:
Initialization of bean failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'healthEndpointWebFluxHandlerMapping' defined in class path resource
[org/springframework/boot/actuate/autoconfigure/health/HealthEndpointReactiveWebExtensionConfiguration$WebFluxAdditionalHealthEndpointPathsConfiguration.class]:
Bean instantiation via factory method failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to instantiate
[org.springframework.boot.actuate.endpoint.web.reactive.AdditionalHealthEndpointPathsWebFluxHandlerMapping]:
Factory method 'healthEndpointWebFluxHandlerMapping' threw exception; nested
exception is org.springframework.beans.factory.UnsatisfiedDependencyE
xception: Error creating bean with name 'healthEndpoint' defined in class path
resource
[org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]:
Unsatisfied dependency expressed through method 'healthEndpoint' parameter 0;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'healthContributorRegistry' defined in class path
resource
[org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]:
Bean instantiation via factory method failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to instantiate
[org.springframework.boot.actuate.health.HealthContributorRegistry]: Factory
method 'healthContributorRegistry' threw exception; nested exception is
org.springframework.beans.factory.UnsatisfiedDependencyException: Error
creating bean with name 'nacosDiscoveryHealthIndicator' defined in class path
resource [com/alibaba/cloud/nacos/endpoint
/NacosDiscoveryEndpointAutoConfiguration.class]: Unsatisfied dependency
expressed through method 'nacosDiscoveryHealthIndicator' parameter 0; nested
exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'com.alibaba.cloud.nacos.NacosServiceManager'
available: expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {}
2023-04-27 08:44:11 [main] INFO
org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener
-
Error starting ApplicationContext. To display the conditions report re-run
your application with 'debug' enabled.
2023-04-27 08:44:12 [main] ERROR
org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter -
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method nacosDiscoveryHealthIndicator in
com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration
required a bean of type 'com.alibaba.cloud.nacos.NacosServiceManager' that
could not be found.
Action:
Consider defining a bean of type
'com.alibaba.cloud.nacos.NacosServiceManager' in your configuration.
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]