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

Fluentd Kubernetes节点:错误:连接ECONNREFUSED 127.0.0.1:24224

司徒捷
2023-03-14

编辑:我直接在我的快速应用程序中对流畅的服务IP进行了编码,并且它的工作。如何在没有 Harcoding IP 的情况下让它工作?

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

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

但是我得到了这个错误:

Fluentd错误错误:连接ECONNREFUSED127.0.0.1:24224

我正在使用 https://github.com/fluent/fluent-logger-node,我的配置非常简单:

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>

这是Fluentd DeamonSet配置文件:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
    version: v1
spec:
  selector:
    matchLabels:
      k8s-app: fluentd-logging
      version: v1
  template:
    metadata:
      labels:
        k8s-app: fluentd-logging
        version: v1
    spec:
      serviceAccount: fluentd
      serviceAccountName: fluentd
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      containers:
        - name: fluentd
          image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
          ports:
            - containerPort: 24224
          env:
            - name:  FLUENT_ELASTICSEARCH_HOST
              value: "xxx"
            - name:  FLUENT_ELASTICSEARCH_PORT
              value: "xxx"
            - name: FLUENT_ELASTICSEARCH_SCHEME
              value: "https"
            # Option to configure elasticsearch plugin with self signed certs
            # ================================================================
            - name: FLUENT_ELASTICSEARCH_SSL_VERIFY
              value: "true"
            # Option to configure elasticsearch plugin with tls
            # ================================================================
            - name: FLUENT_ELASTICSEARCH_SSL_VERSION
              value: "TLSv1_2"
            # X-Pack Authentication
            # =====================
            - name: FLUENT_ELASTICSEARCH_USER
              value: "xxx"
            - name: FLUENT_ELASTICSEARCH_PASSWORD
              value: "xxx"
          resources:
            limits:
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 200Mi
          volumeMounts:
            - name: config-volume
              mountPath: /fluentd/etc/kubernetes.conf
              subPath: kubernetes.conf
            - name: varlog
              mountPath: /var/log
            - name: varlibdockercontainers
              mountPath: /var/lib/docker/containers
              readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
        - name: config-volume
          configMap:
            name: fluentd-conf
        - name: varlog
          hostPath:
            path: /var/log
        - name: varlibdockercontainers
          hostPath:
            path: /var/lib/docker/containers

我还尝试部署一个服务并公开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: {}

最后,我的快速应用程序(部署)在这里:

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

编辑:我直接在我的快速应用程序中对流畅的服务IP进行了编码,并且它的工作。如何在没有 Harcoding IP 的情况下让它工作?

共有1个答案

施飞鸿
2023-03-14

关注问题的以下部分:

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

编辑:我直接在我的快速应用程序中对流畅的服务IP进行了编码,并且它的工作。如何在没有 Harcoding IP 的情况下让它工作?

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

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

  • curl Fluentd: 24224

您只能在同一个命名空间中通过其名称(如Fluentd)与服务进行通信。如果服务在另一个命名空间中,您需要使用它的完整DNS名称。它的模板和示例如下:

    < li >模板:< code > service-name . namespace . SVC . cluster . local < li >示例:< code > fluentd . kube-system . SVC . cluster . local

您还可以使用<code>ExternalName</code>类型的服务将服务的完整DNS名称映射到以下较短版本:

假设(示例):

  • 您已经创建了nginx命名空间命名空间:
    • $kubectl创建命名空间nginx命名空间
    • $kubectl创建部署nginx--image=nginx--namespace=nginx-namespace
    • $kubectl公开部署nginx--port=80--type=ClusterIP--namespace=nginx namespace

    您可以选择与上面的pod通信:

    • 通过Pod的IP地址
      • 10.98.132.201
        < Li > < code > nginx . nginx-namespace . SVC . cluster . local
      • ng in x-service

      服务外部名称类型的示例:

      apiVersion: v1
      kind: Service
      metadata:
        name: nginx-service
        namespace: default # <- the same as the pod communicating with the service
      spec:
        type: ExternalName
        externalName: nginx.nginx-namespace.svc.cluster.local
      

      您可以通过以下方式将此信息传递给pod:

      • 环境变量:Kubernetes。io:定义环境变量容器
      • 配置图:Kubernetes。io:配置pod配置映射

      其他资源:

      • Stackoverflow.com:位于另一个命名空间中的服务

 类似资料:
  • 我正在学习Flask和Postman,目前,我正在尝试解决这个问题。下面是Python的代码行: 运行之后,当我去邮递员处运行以下命令时:获取:http://127.0.0.1:5000/get_chain控制台向我显示以下消息:错误:connect econnrefered127.0.0.1:5000

  • 我使用以下模块中的反向代理https://github.com/nodejitsu/node-http-proxy 我只需要代理调用到新的端口

  • 有一个关于阿帕奇的 php 文件: 和节点js在同一个目录中 浏览器抛出错误:GEThttp://192.168.100.31/socket.io/?EIO=4 如果替换let套接字=io.connect('http://localhost:3000')在let套接字=io.connect('http://192.168.100.31:3000');浏览器将给出另一个错误:访问XMLHttp请求在

  • 我试图使用任何NodeJS或NPM命令,但我总是得到以下错误: 套接字:(10106)无法加载或初始化请求的服务提供程序。 我正在运行Windows 10,我尝试再次重新安装nodejs,但仍然没有改变。

  • C:\Users\ramachandran.s oracledb@1.2.0安装C:\Users\ramachandran.s\node\u modules\oracledb node gyp rebuild C:\Users\ramachandran.s\node\u modules\oracledb 我错过了什么,请帮忙

  • EasyReact 的重点就是让节点之间的数据流动起来,所以连接节点是很重要的。 如何连接两个节点 两个节点是通过变换来连接的,在源码目录 EasyReact/Classes/Core/NodeTransforms 中我们默认实现了了很多的变换,你也可以通过继承 EZRTransform 类来实现自己的变换,一旦我们创建好一个变换后,就可以通过如下方式进行连接了: EZRMutableNode<N