我正在尝试将简单的 nginx pod 连接到 Nodeport 服务。但我收到一个错误,即连接被拒绝

I am trying to Connect simple nginx pod to Nodeport service. but i am getting a error i.e, Connection refused

root@Master:~# cat new-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: zero-pod
  labels:
    app: my-ns
spec:
  containers:
  - image: nginx
    name: zero-pod
root@Master:~# cat nps.yaml 
apiVersion: v1
kind: Service
metadata:
  name: my-ns
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: my-ns
  type: NodePort
root@Master:~# kubectl get svc my-ns
NAME    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
my-ns   NodePort   10.105.183.144   <none>        80:30007/TCP   48m

root@Master:~# curl 10.2.0.4:30007
curl: (7) Failed to connect to 10.2.0.4 port 30007: Connection refused

我创建了另一个连接到同一个 nodeport 服务的简单 helloworld pod,它正在运行。

root@Master:~# curl 10.2.0.4:30007
Hello, world!
Version: 2.0.0
Hostname: pod-theta

基本的东西是什么,我在这里面遗漏了什么,或者我们根本无法将 nginx 服务器连接到 nodeport。

如果没有,我看到 nginx 正在通过部署连接到 nodeport,它是如何工作的,有人可以解释一下吗??

官方 nginx 容器中的 nginx 服务监听端口 80,而不是端口 8080。您需要更新 Service:

中的 targetPort 设置
apiVersion: v1
kind: Service
metadata:
  name: my-ns
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: my-ns
  type: NodePort

虽然不是绝对必要,但我会在您的 Pod 清单中定义端口,可能带有名称,这样您最终会得到这个 Pod 清单:

apiVersion: v1
kind: Pod
metadata:
  name: zero-pod
  labels:
    app: my-ns
spec:
  containers:
  - image: nginx
    name: zero-pod
    ports:
      - containerPort: 80
        name: http

还有这个Service

apiVersion: v1
kind: Service
metadata:
  name: my-ns
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: http
  selector:
    app: my-ns
  type: NodePort