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

Mac Docker Desktop Kubernetes连接本地8087端口Java应用的IP配置问题

在Docker Desktop(Mac)Kubernetes中指向本地主机服务的Endpoints配置

在Mac的Docker Desktop Kubernetes环境中,集群内Pod无法通过127.0.0.1访问宿主机服务——因为Pod的127.0.0.1指向自身容器,而非Mac宿主机。你需要填写以下两类IP之一到Endpoints中:

1. 宿主机的内网IP

获取Mac宿主机的内网IP:

  • 打开终端,执行命令:ipconfig getifaddr en0(WiFi网络用en0,以太网用en1)
  • 得到类似192.168.1.105的IP地址,将其填入Endpoints的ip字段。

2. Docker Desktop专属网关IP

Docker Desktop在Mac上提供了固定网关IP(对应DNS名称host.docker.internal),获取方式:

  • 终端执行:ping host.docker.internal,返回的IP通常为192.168.65.2(版本不同可能略有差异)
  • 将该IP填入Endpoints的ip字段。

修正你的配置

注意:原Service配置中的selector必须删除——当Service存在selector时,Kubernetes会自动生成Endpoints,覆盖你手动定义的配置。修正后的完整配置如下:

Service与Endpoints

apiVersion: v1
kind: Service
metadata:
  name: auth
spec:
  # 移除selector,让Service使用手动定义的Endpoints
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8087
---
kind: Endpoints
apiVersion: v1
metadata:
  name: auth
subsets:
  - addresses:
      - ip: 192.168.1.105  # 替换为你的宿主机内网IP或Docker网关IP
    ports:
      - port: 8087

Ingress配置(保持原有即可)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: router
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - host: localhost
    http:
      paths:
      - path: /api/user
        pathType: Prefix
        backend:
          service:
            name: auth
            port:
              number: 80

验证连接

进入集群内的测试Pod,验证是否能访问本地服务:

kubectl run -it --rm busybox --image=busybox:1.36 -- sh
# 在Pod内执行
wget -qO- auth:80/api/user

若返回本地Java应用的响应,说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:01:36