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

React Native模拟器无法访问Kubernetes端点sanction.dev的原因排查

React Native 无法访问Kubernetes端点sanction.dev的排查方案

问题场景

在React Native Android和iOS模拟器中访问端点sanction.dev时,出现「Network error」错误,现有Kubernetes配置和宿主机/etc/hosts映射如下:

Kubernetes配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: dockerhub/sanction-auth
---
apiVersion: v1
kind: Service
metadata:
  name: auth-srv
spec:
  selector:
    app: auth
  ports:
    - name: auth
      port: 3000
      targetPort: 3000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: sanction.dev
      http:
        paths:
          - path: /api/auth/?(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000

宿主机/etc/hosts配置

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
# 127.0.0.1     localhost
255.255.255.255 broadcasthost
::1             localhost

127.0.0.1 sanction.dev

排查方向

  • Ingress Controller端口映射验证
    确认Nginx Ingress Controller的端口是否正确映射到宿主机:

    1. 执行命令查看Ingress Controller服务状态:
      kubectl get svc -n ingress-nginx
      
    2. 如果是NodePort类型,需使用sanction.dev:<NodePort>格式访问;如果是LoadBalancer,确认外部IP是否正常绑定。
  • 模拟器网络访问限制

    • Android模拟器:无法直接通过127.0.0.1访问宿主机,需替换为模拟器网关地址10.0.2.2,测试时可直接使用http://10.0.2.2:<端口>/api/auth/xxx。
    • iOS模拟器:确认宿主机防火墙允许80/443端口访问,执行命令验证端口占用:
      sudo lsof -i :80
      
  • Ingress路径匹配检查
    现有Ingress规则仅匹配/api/auth/开头的路径,若请求URL不符合该格式(如直接访问sanction.dev/login)会返回404,被React Native识别为网络错误。可临时修改Ingress路径为/(.*)测试是否能正常访问。

  • 后端服务可用性验证

    1. 确认auth Pod状态正常:
      kubectl get pods
      
    2. 进入Pod内部测试服务是否正常响应:
      kubectl exec -it <auth-pod-name> -- curl localhost:3000/api/auth/health
      
  • Hosts映射生效问题

    • Android模拟器:宿主机hosts不会同步到模拟器,需通过adb推送修改:
      adb push /etc/hosts /system/etc/hosts
      
      (需模拟器开启root权限)
    • iOS模拟器:修改宿主机hosts后需重启模拟器才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:22:41