You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes部署的Spring Boot Admin证书错误排查求助

Spring Boot Admin在Kubernetes中的服务发现机制与证书错误排查

一、Spring Boot Admin在K8s中获取待监控应用的方式

  • 命名空间访问逻辑:默认情况下,Spring Boot Admin会访问当前Pod所在的命名空间;若配置了spring.boot.admin.discovery.kubernetes.namespaces参数,则会扫描指定的多个命名空间;未配置该参数且拥有集群级权限时,会扫描所有命名空间。
  • 服务发现流程:
    1. 通过fabric8 Kubernetes Client调用K8s API Server,执行Service资源的List操作(对应报错中的Operation: [list] for kind: [Service])
    2. 筛选带有指定标签的Service(默认标签为spring.boot.admin.enabled=true,可通过spring.boot.admin.discovery.kubernetes.service-labels自定义)
    3. 解析Service关联的Pod,提取应用的Actuator端点地址,完成监控目标的注册

二、证书错误的排查与解决

报错根源是访问K8s API Server时SSL握手失败,无法验证服务器证书,按以下步骤排查:

  • 确认访问目标:Spring Boot Admin使用的fabric8 Client默认读取Pod内的/var/run/secrets/kubernetes.io/serviceaccount/下的token和ca.crt,访问地址来自环境变量KUBERNETES_SERVICE_HOST和KUBERNETES_SERVICE_PORT指向的K8s API Server。
  • 问题排查点:
    1. Pod内的ca.crt文件是否存在、是否过期或被篡改
    2. 自定义K8s API Server证书时,Spring Boot Admin的JVM信任库未包含该根证书
    3. ServiceAccount权限变更,导致无法读取ca.crt文件
  • 解决步骤:
    1. 进入Spring Boot Admin Pod,检查ca.crt的有效性:
      # 查看证书内容
      cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      # 验证证书有效期
      openssl x509 -in /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -text -noout
      
    2. 测试API Server证书信任:
      curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}
      
    3. 若使用自定义证书,将根证书导入JVM信任库:
      keytool -importcert -file /path/to/custom-root-ca.crt -alias k8s-api-ca -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt
      
      或通过启动参数指定自定义信任库:
      java -Djavax.net.ssl.trustStore=/opt/app/truststore.jks -Djavax.net.ssl.trustStorePassword=your-password -jar spring-boot-admin.jar
      
    4. 验证ServiceAccount权限,确保拥有Service的List权限:
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: spring-boot-admin-cluster-role
      rules:
      - apiGroups: [""]
        resources: ["services", "pods"]
        verbs: ["list", "watch"]
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: spring-boot-admin-binding
      subjects:
      - kind: ServiceAccount
        name: spring-boot-admin-sa
        namespace: your-namespace
      roleRef:
        kind: ClusterRole
        name: spring-boot-admin-cluster-role
        apiGroup: rbac.authorization.k8s.io
      

内容的提问来源于stack exchange,提问作者spq838

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:50:32