Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Fluentd Kubernetes节点JS:错误:connect ECONREFUSSED 127.0.0.1:24224_Node.js_Kubernetes_Fluentd - Fatal编程技术网

Node.js Fluentd Kubernetes节点JS:错误:connect ECONREFUSSED 127.0.0.1:24224

Node.js Fluentd Kubernetes节点JS:错误:connect ECONREFUSSED 127.0.0.1:24224,node.js,kubernetes,fluentd,Node.js,Kubernetes,Fluentd,编辑:我直接在我的express应用程序中对fluentd服务IP进行了编码,并对其进行了工作。。如何在无需对ip进行编码的情况下使其正常工作? 我有两个pod(nodejs+express服务器)运行在Kubernetes集群上 我想将日志从我的nodejs pods发送到Fluentd DeamonSet 但我得到了一个错误: Fluentd错误:连接EConrefuse127.0.0.1:24224 我正在使用并且我的配置非常简单: const logger = require('flue

编辑:我直接在我的express应用程序中对fluentd服务IP进行了编码,并对其进行了工作。。如何在无需对ip进行编码的情况下使其正常工作?

我有两个pod(nodejs+express服务器)运行在Kubernetes集群上

我想将日志从我的nodejs pods发送到Fluentd DeamonSet

但我得到了一个错误:

Fluentd错误:连接EConrefuse127.0.0.1:24224

我正在使用并且我的配置非常简单:

const logger = require('fluent-logger')

logger.configure('pptr', {
   host: 'localhost',
   port: 24224,
   timeout: 3.0,
   reconnectInterval: 600000
});
我的fluentd配置文件:

<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

# Ignore fluent logs
<label @FLUENT_LOG>
  <match fluent.*>
    @type null
  </match>
</label>

<match pptr.**>
  @type elasticsearch
  host "#{ENV['FLUENT_ELASTICSEARCH_HOST']}"
  port "#{ENV['FLUENT_ELASTICSEARCH_PORT']}"
  scheme "#{ENV['FLUENT_ELASTICSEARCH_SCHEME'] || 'http'}"
  ssl_verify "#{ENV['FLUENT_ELASTICSEARCH_SSL_VERIFY'] || 'true'}"
  user "#{ENV['FLUENT_ELASTICSEARCH_USER']}"
  password "#{ENV['FLUENT_ELASTICSEARCH_PASSWORD']}"
  reload_connections "#{ENV['FLUENT_ELASTICSEARCH_RELOAD_CONNECTIONS'] || 'true'}"
  type_name fluentd
  logstash_format true
</match>
我还尝试部署服务并公开24224端口:

apiVersion: v1
kind: Service
metadata:
  name: fluentd
  namespace: kube-system
  labels:
    app: fluentd
spec:
  ports:
    - name: "24224"
      port: 24224
      targetPort: 24224
  selector:
    k8s-app: fluentd-logging
status:
  loadBalancer: {}
最后,我的express应用程序(部署)在这里:


编辑:我直接在我的express应用程序中对fluentd服务IP进行了编码,并对其进行了工作。。如何在无需对ip进行编码的情况下使其工作?

重点关注问题的以下部分:

我想把我的nodejs吊舱里的日志发送给Fluentd执事

编辑:我直接在我的express应用程序中对fluentd服务IP进行了编码,并对其进行了工作。。如何在没有harip编码的情况下让它工作

看起来pods和
fluentd
服务之间的通信是正确的(对IP进行硬编码)。这里的问题是他们之间的沟通方式

您可以通过名称与service
fluentd
进行通信。例如(从吊舱内部):

  • curl fluentd:24224
您只能在同一名称空间中通过其名称(如
fluentd
)与服务通信。
如果服务位于另一名称空间中,则需要使用其DNS全名。其模板和示例如下所示:

  • 模板:
    service name.namespace.svc.cluster.local
  • 示例:
    fluentd.kube system.svc.cluster.local
您还可以使用
ExternalName
类型的服务将您的服务的DNS全名映射到一个较短的版本,如下所示:


假设(例如):

  • 您已经创建了
    nginx命名空间
    命名空间:
    • $kubectl创建名称空间nginx名称空间
  • 您在
    nginx命名空间中有一个
    nginx
    部署
    ,以及一个与之关联的服务:
    • $kubectl创建部署nginx--image=nginx--namespace=nginx namespace
    • $kubectl公开部署nginx--port=80--type=ClusterIP--namespace=nginx namespace
  • 您想从另一个名称空间(即
    默认值
    )与
    nginx
    部署
    通信
您可以选择与上述pod通信:

  • 通过
    Pod的IP地址
    
    • 10.98.132.201
  • 通过(完整)DNS服务名称
    • nginx.nginx namespace.svc.cluster.local
  • 通过指向a(完整)DNS服务名称的
    ExternalName
    服务类型
    • nginx服务
ExternalName
服务类型示例:

apiVersion:v1 种类:服务 元数据: 名称:nginx服务
命名空间:默认#您的
fluentd
守护程序位于
kube系统中
,您的
puppet
部署位于
default
命名空间中。要将数据发送到此守护程序,您需要使用以下FQDN:
fluentd.kube system.svc.cluster.local
。您尝试过这种方法吗?谢谢,我可以在puppet部署中将此FQDN作为env变量吗?
apiVersion: v1
kind: Service
metadata:
  name: fluentd
  namespace: kube-system
  labels:
    app: fluentd
spec:
  ports:
    - name: "24224"
      port: 24224
      targetPort: 24224
  selector:
    k8s-app: fluentd-logging
status:
  loadBalancer: {}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: puppet
  labels:
    app: puppet
spec:
  replicas: 5
  selector:
    matchLabels:
      app: puppet
  template:
    metadata:
      labels:
        app: puppet
    spec:
      containers:
        - name: puppet
          image: myrepo/my-image
          ports:
            - containerPort: 8080