NodePort服务不能通过`port`号从外部访问

Afs*_*ani 10 kubernetes

我有以下服务配置:

kind: Service
apiVersion: v1
metadata:
  name: web-srv
spec:
  type: NodePort
  selector:
    app: userapp
    tier: web
  ports:
    - protocol: TCP
      port: 8090
      targetPort: 80
      nodePort: 31000
Run Code Online (Sandbox Code Playgroud)

并且这个服务背后有一个nginx容器.虽然我可以nodePort通过port现场访问服务,但无法通过现场访问服务.我能够看到配置kubectl和Kubernetes仪表板,但curl进入该端口(例如curl http://192.168.0.100:8090)引发连接拒绝错误.

我不确定这里有什么问题.我是否需要确保在节点或容器内运行任何代理服务?

iam*_*nat 20

获取kubernetes服务的IP,然后达到8090; 它会工作.nodePort表示该服务绑定到端口31000上的节点.

这些是可行的3件事:

curl <node-ip>:<node-port>        # curl <node-ip>:31000
curl <service-ip>:<service-port>  # curl <svc-ip>:8090
curl <pod-ip>:<target-port>       # curl <pod-ip>:80
Run Code Online (Sandbox Code Playgroud)

现在,让我们看看3种情况:

1.你在kubernetes集群内(你是一个pod)

<service-ip><pod-ip><node-ip>会工作.

你在节点上

<service-ip><pod-ip><node-ip>会工作.

你在节点之外

只有在可以达到的情况下<node-ip>才能工作<node-ip>.

  • 所有这些似乎都对我来说很重要。我使用“kubectl描述服务&lt;my-service&gt;”来获取“&lt;service-ip&gt;”。我的服务将“port”设置为“80”,“targetPort”设置为“8080”,“nodePort”设置为“31000”。这些选项都不起作用。还有什么我们应该做的吗? (2认同)