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

使用K8s YAML部署Spring Boot应用无法访问,与命令行结果不一致

问题分析与解决方案

嘿,我一眼就发现问题所在了——你的Service和Pod之间没有建立关联,导致外部请求的流量无法转发到对应的Pod上,自然访问不到应用。

为什么命令行部署能正常工作?

当你用kubectl run创建Deployment时,K8s会自动给生成的Pod打上类似run: gearbox-rack-eureka-server的标签;紧接着kubectl expose命令会自动识别这个标签,并将其作为Service的selector配置,这样Service就能精准找到要转发流量的Pod,所以访问正常。

你的YAML配置哪里错了?

看你的配置文件:

  • Pod的metadata.labels是purpose: platform_eureka_demo
  • 但Service的spec里完全没有selector字段——K8s根本不知道这个Service要把流量发给哪些Pod,相当于Service是“孤立”的,没有绑定任何后端Pod。

修正方案

1. 修改Service的YAML(eureka_svc.yaml)

给Service加上selector字段,匹配Pod的标签:

apiVersion: v1
kind: Service
metadata:
  name: gearbox-rack-eureka-server
  labels:
    name: gearbox_rack_eureka_server
spec:
  type: NodePort
  selector:
    purpose: platform_eureka_demo  # 这里必须和Pod的labels完全匹配
  ports:
  - port: 8761
    nodePort: 31501
    name: tcp
    targetPort: 8761  # 明确指定容器端口,增强可读性(和containerPort一致)

2. (可选但推荐)用Deployment替代直接创建Pod

直接创建Pod的话,一旦Pod意外挂掉,K8s不会自动重启它。换成Deployment能保证应用的高可用性:
把原来的eureka_pod.yaml改成Deployment配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gearbox-rack-eureka-server
spec:
  replicas: 1  # 保持1个副本
  selector:
    matchLabels:
      purpose: platform_eureka_demo
  template:
    metadata:
      labels:
        purpose: platform_eureka_demo
    spec:
      containers:
      - name: gearbox-rack-eureka-server
        image: 192.168.1.229:5000/gearboxrack/gearbox-rack-eureka-server
        ports:
        - containerPort: 8761

操作步骤

  1. 先删除之前创建的Pod和Service:
kubectl delete pod gearbox-rack-eureka-server
kubectl delete svc gearbox-rack-eureka-server
  1. 重新应用修正后的配置:
# 如果用Deployment的话执行这个
kubectl apply -f eureka_deployment.yaml
# 再执行Service的配置
kubectl apply -f eureka_svc.yaml
  1. 检查关联状态:
    执行kubectl describe svc gearbox-rack-eureka-server,在Endpoints字段里应该能看到Pod的IP,说明关联成功了,此时再访问172.16.100.83:31501就能正常打开应用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:44:21