M1 MacBook Pro上Kubernetes NodePort服务无法访问问题求助
NodePort访问异常修复方案
核心配置问题
你给出的两份配置存在两处关键字段缺失,是导致NodePort访问失败的主要原因:
- Pod 未声明
containerPort:没有指定容器内应用实际监听的端口 - Service 未声明
targetPort:没有配置请求转发到容器的目标端口,默认会和port字段值保持一致,如果你的应用实际监听端口不是80就会转发失败
补充说明:LoadBalancer类型服务通常由云厂商实现底层转发逻辑,配置容错性更高,所以不会暴露这个问题。
修正后的配置
Pod yaml
apiVersion: v1 kind: Pod metadata: name: pod-webapp labels: app: webapp spec: containers: - name: app image: mydockerimage_xxx # 替换为你的应用实际监听的端口 ports: - containerPort: 8080
Service yaml
kind: Service apiVersion: v1 metadata: name: service-webapp spec: ports: - name: http port: 80 # 和上面containerPort保持一致 targetPort: 8080 nodePort: 30080 selector: app: webapp type: NodePort
修正后仍异常的排查步骤
- 执行
kubectl get pods确认Pod状态为Running,无异常重启 - 执行
kubectl describe svc service-webapp查看Endpoints字段,确认有对应Pod的IP,为空则说明Pod标签和Service的selector不匹配 - 云服务器部署的场景需要先放开节点安全组的30080端口入站规则,同时确认节点本地防火墙(firewalld/iptables)放行30080端口
- 访问时使用
节点公网IP:30080地址测试,先在节点本地执行curl 127.0.0.1:30080验证本地连通性,本地能通则基本为外部网络策略拦截问题
内容的提问来源于stack exchange,提问作者nagaraj
相关产品推荐
相关产品推荐

