芯科科技出展CES 2026并展出如何加速互联智能的未来
2026/1/8 2:20:42
本文深入探讨Spring Boot Admin与Kubernetes的集成监控方案,包括容器化部署、服务发现、资源监控等关键技术点。通过详细的技术解析和实践示例,帮助开发者构建基于Kubernetes的微服务监控体系。
Kubernetes作为容器编排的标准,与Spring Boot Admin结合可以实现云原生的微服务监控。本文将详细介绍如何在Kubernetes环境中部署和监控Spring Boot应用。
Kubernetes监控架构包含以下组件:
FROM openjdk:8-jre-alpine # 创建应用目录 RUN addgroup -S spring && adduser -S spring -G spring USER spring:spring WORKDIR /app # 复制应用文件 COPY --chown=spring:spring target/admin-server.jar app.jar # 暴露端口 EXPOSE 8022 # 启动命令 ENTRYPOINT ["java", "-jar", "app.jar", \ "--spring.profiles.active=kubernetes", \ "--server.port=8022"]# k8s-deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:admin-serverlabels:app:admin-serverspec:replicas:2selector:matchLabels:app:admin-servertemplate:metadata:labels:app:admin-serverspec:containers:-name:admin-serverimage:admin-server:latestports:-containerPort:8022env:-name:SERVER_PORTvalue:"8022"-name:SPRING_PROFILES_ACTIVEvalue:"kubernetes"-name:NACOS_SERVER_ADDRvalue:"nacos-headless:8848"livenessProbe:httpGet:path:/actuator/healthport:8022initialDelaySeconds:60periodSeconds:30readinessProbe:httpGet:path:/actuator/healthport:8022initialDelaySeconds:30periodSeconds:10resources:requests:memory:"512Mi"cpu:"250m"limits:memory:"1Gi"cpu:"500m"# k8s-service.yamlapiVersion:v1kind:Servicemetadata:name:admin-server-servicelabels:app:admin-serverspec:selector:app:admin-serverports:-protocol:TCPport:80targetPort:8022type:LoadBalancer---apiVersion:v1kind:Servicemetadata:name:admin-server-headlesslabels:app:admin-serverspec:selector:app:admin-serverports:-protocol:TCPport:8022targetPort:8022clusterIP:None# Headless service for DNS-based discoverypackagecom.springboot.admin.k8s.discovery;importorg.springframework.boot.autoconfigure.condition.ConditionalOnProperty;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;importorg.springframework.context.annotation.Configuration;@Configuration@ConditionalOnProperty(name="spring.cloud.kubernetes.enabled",havingValue="true")@EnableDiscoveryClientpublicclassKubernetesDiscoveryConfig{// Kubernetes服务发现配置}packagecom.springboot.admin.k8s.discovery;importio.kubernetes.client.openapi.ApiClient;importio.kubernetes.client.openapi.apis.CoreV1Api;importio.kubernetes.client.util.Config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassKubernetesClientConfig{@BeanpublicApiClientapiClient()throwsjava.io.IOException{returnConfig.defaultClient();}@BeanpublicCoreV1ApicoreV1Api(ApiClientapiClient){returnnewCoreV1Api(apiClient);}}# application-k8s.ymlserver:port:8022spring:application:name:admin-server-k8scloud:kubernetes:enabled:truereload:enabled:truemode:eventconfig:enable-api:truediscovery:enabled:truesecrets:enable-api:true# Spring Boot Admin配置boot:admin:server:ui:title:'Kubernetes监控平台'brand:'<img src="assets/img/icon-spring-boot-admin.svg"><span>Kubernetes监控平台</span>'# Kubernetes特定配置kubernetes:enabled:truenamespace:defaultlabels:app:spring-boot-appannotations:prometheus.io/scrape:"true"prometheus.io/port:"8022"# Actuator配置management:endpoints:web:exposure:include:health,info,metrics,prometheusbase-path:/actuatorendpoint:health:show-details:alwaysprometheus:enabled:truemetrics:export:prometheus:enabled:true# Kubernetes客户端配置kubernetes:client:namespace:defaultservice-account:token-file:/var/run/secrets/kubernetes.io/serviceaccount/tokenca-cert-file:/var/run/secrets/kubernetes.io/serviceaccount/ca.crtapi-version:v1master-url:https://kubernetes.default.svc.cluster.local