当前位置: 首页 > 知识库问答 >
问题:

Kubernetes NAT流服务器-连接被拒绝

叶明辉
2023-03-14

我正在使用NAT开发一个微服务web应用程序(React和Node)并在GCP Kubernetes集群上运行它。

我无法连接到NAT流服务器POD。端口4222和8222是打开的。我收到连接拒绝错误。

Using ts-node version 8.10.2, typescript version 3.9.7
NatsError: Could not connect to server: Error: connect ECONNREFUSED 10.32.13.69:4222
    at Socket.<anonymous> (/app/node_modules/nats/lib/nats.js:801:26)
    at Socket.emit (events.js:314:20)
    at emitErrorNT (internal/streams/destroy.js:100:8)
    at emitErrorCloseNT (internal/streams/destroy.js:68:3)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  code: 'CONN_ERR',
  chainedError: Error: connect ECONNREFUSED 10.32.13.69:4222
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1144:16) {
    errno: -111,
    code: 'ECONNREFUSED',
    syscall: 'connect',
    address: '10.32.13.69',
    port: 4222
  }
}
apiVersion: apps/v1
kind: Deployment 
metadata: 
    name: nats-depl
spec:
    replicas: 1
    selector: 
        matchLabels: 
            app: nats
    template:
        metadata: 
            labels: 
                app: nats
        spec:
            containers: 
                - name: nats 
                  image: nats-streaming:0.17.0 
                  ## args provides arguments to the primary
                  ## cmd executed when container starts 
                  args: [
                    '--port', '4222',
                    '--http_port', '8222',
                    '--hb_interval', '5s',      
                    '--hb_timeout', '5s',       
                    '--hb_fail_count', '2',     
                    '--stan_debug', 
                    '--cluster_id', 'ticketing'
                  ]
---
apiVersion: v1
kind: Service 
metadata:
    name: nats-srv 
spec: 
    type: ClusterIP
    selector: 
        apps: nats 
    ports: 
        - name: client 
          protocol: TCP 
          port: 4222 
          targetPort: 4222 
        - name: monitoring 
          protocol: TCP 
          port: 8222 
          targetPort: 8222 

$kubectl描述服务NAT-Srv

$ kubectl describe service nats-srv
Name:              nats-srv
Namespace:         default
Labels:            app.kubernetes.io/managed-by=skaffold-v1.11.0
                   skaffold.dev/builder=google-cloud-build
                   skaffold.dev/cleanup=true
                   skaffold.dev/deployer=kubectl
                   skaffold.dev/run-id=59070209-9ab7-47cd-ab0f-cdd91797b1a7
                   skaffold.dev/tag-policy=git-commit
                   skaffold.dev/tail=true
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/managed-by":"skaffold-v1.11.0","skaffold.dev...
Selector:          apps=nats
Type:              ClusterIP
IP:                10.32.13.69
Port:              client  4222/TCP
TargetPort:        4222/TCP
Endpoints:         <none>
Port:              monitoring  8222/TCP
TargetPort:        8222/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>

共有1个答案

钱远
2023-03-14

服务具有选择器apps:nats,但部署具有标签app:nats。这就是服务中的endpoints没有Pod IPs的原因,因此您会得到connection refired。按如下所示修改服务

---
apiVersion: v1
kind: Service 
metadata:
    name: nats-srv 
spec: 
    type: ClusterIP
    selector: 
        app: nats 
    ports: 
        - name: client 
          protocol: TCP 
          port: 4222 
          targetPort: 4222 
        - name: monitoring 
          protocol: TCP 
          port: 8222 
          targetPort: 8222
 类似资料:
  • 问题内容: 前几天,我的GoDaddy托管网站遇到了一些问题。我打电话给他们的技术支持,与我交谈的人建议我的问题与我在Windows机器上,最好在Linux机器上使用有关。我对此没有意见,我同意了,他们把我换了。 过渡之后,我的PHPMailer功能让我迷茫了。我已经工作了几个月,所以我知道我的设置是正确的。我已与GoDaddy确认,从他们的角度来看,我要发送的帐户并未更改。用户侧未进行任何更改(

  • 我是库伯内特斯的初学者。我正在尝试安装迷你库贝,想在库伯内特斯中运行我的应用程序。我正在使用乌班图 16.04 我已遵循此处提供的安装说明https://kubernetes.io/docs/setup/learning-environment/minikube/#using-带有http代理的minikube 问题1:在安装了kubectl、virtualbox和minikube之后,我运行了命

  • 每次运行Rails4.0服务器时,都会得到这个输出。 我正在运行小牛OS X10.9,所以我不知道这是不是问题所在。我已经试了我能试的一切,但似乎都没有效果。我已经卸载并安装了postgres和pg gem多次了。 这是我的database.yml文件

  • 我能够在库伯内特斯将两个节点聚集在一起。主节点似乎运行良好,但是在工作节点上运行任何命令都会导致错误:“拒绝与服务器localhost:8080连接——您指定了正确的主机或端口吗?” 来自大师(node1), 来自工作者(节点2), 我不知道如何解决这个问题。感谢您的帮助。 在执行时,"Journal alctl-xeu kubelet"我看到:"CNI未能检索网络命名空间路径:无法为终止的容器找

  • 我的connect调用的结果始终是10061:连接被拒绝。 如果我将服务器代码更改为绑定到::(或者将空主机传递给getaddrinfo()(同样的事情)),并将客户机代码更改为在getaddrinfo()调用中指定空主机,那么V4客户机可以很好地连接。 谁能解释一下为什么?我没有读到任何东西,如果我们想要双套接字行为,我们必须指定一个空主机(因此使用INADDR_ANY)。这不可能是一个要求,因

  • 问题内容: 我正在尝试使用Flask在Raspberry Pi上运行一个简单的Web服务器。当我运行Flask应用程序时,它说: 在http://127.0.0.1:5000/上运行 但是,当我在笔记本电脑的Chrome中输入此地址时, ERR_CONNECTION_REFUSED 我可以在Raspberry Pi的浏览器上打开127.0.0.1:5000。我需要怎么做才能从另一台计算机连接? 问