fluentd报错

我在容器服务 - Kubernetes 集群中创建了efk日志服务,现在fluentd启动报错:
2019-04-24 16:01:06 +0000 [error]: config error file="/etc/fluent/fluent.conf" error_class=Fluent::ConfigError error="Invalid Kubernetes API v1 endpoint https://10.253.0.1:443/api: SSL_connect returned=1 errno=0 state=error: certificate verify failed“
我查询了一些文档,有人说是需要添加证书,由于k8s是阿里直接创建好的,我试了/etc/kubernetes/pki下的所有正式,还是提示这个错误,证书已经复制的到了node节点。
node:
ls /etc/kubernetes/pki
apiserver-ca.crt  apiserver.crt  apiserver.key  apiserver-kubelet-client.crt  apiserver-kubelet-client.key  ca.crt

这一套efk的yaml文件在我本地搭建的k8s集群部署没有任何问题!!!

fluentd部分配置:
containers:
      - name: fluentd-es
        image: gcr.azk8s.cn/fluentd-elasticsearch/fluentd:v2.5.1
        env:
        - name: FLUENTD_ARGS
          value: --no-supervisor -q
        resources:
          limits:
            memory: 500Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
        - name: config-volume
          mountPath: /etc/fluent/config.d
        - name: api-key
          mountPath: /etc/kubernetes/pki
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers
      - name: api-key
        hostPath:
          path: /etc/kubernetes/pki
      - name: config-volume
        configMap:
          name: fluentd-es-config-v0.2.0

configmap部分配置:
<filter kubernetes.**>
      @id filter_kubernetes_metadata
      @type kubernetes_metadata
      ca_file /etc/kubernetes/pki/apiserver-ca.crt
      client_cert /etc/kubernetes/pki/apiserver-kubelet-client.crt
      client_key /etc/kubernetes/pki/apiserver-kubelet-client.key
    </filter>

展开
收起
1287444518512155 2019-04-25 00:17:12 3314 分享 版权
阿里云 AI 助理回答

遇到这个问题,通常是因为Fluentd在尝试连接Kubernetes API时无法验证API服务器的SSL证书。根据你的描述,你已经尝试将相关的证书文件挂载到Pod中,但仍然遇到问题。这里有几个可能的解决方向:

  1. 证书路径或名称确认:首先,请确保配置文件中引用的证书路径与实际挂载到Pod中的路径完全一致。从你的描述来看,似乎没有直接提到apiserver.crtapiserver.key是否也被考虑使用或是否必要。虽然通常用于API Server对客户端的认证,但某些情况下也需确保它们正确无误。

  2. 证书信任链:确保API服务器的CA证书(apiserver-ca.crt)被Fluentd正确识别并信任。有时候,问题可能出在证书链不完整上,即使证书本身是有效的。你可以尝试使用openssl s_client -connect 10.253.0.1:443命令来检查连接,并查看SSL握手过程中的证书信息,以确认是否所有必要的中间证书都已包含。

  3. 更新或替换证书:如果上述步骤都无法解决问题,可能是证书本身存在问题或者过期了。请检查阿里云Kubernetes集群管理界面是否有更新的证书可供使用,或者联系阿里云技术支持获取帮助。

  4. 禁用SSL验证:这是一个不太安全但可以作为临时解决方案的方法。在开发或测试环境中,你可能会选择临时禁用SSL验证来绕过这个问题。这可以通过在Fluentd配置中添加如下配置实现:

    <source>
      @type tail
      path /var/log/containers/*.log
      pos_file /var/log/fluentd-containers.log.pos
      tag kubernetes.*
      read_from_head true
      <parse>
        @type json
        time_format %Y-%m-%dT%H:%M:%S.%NZ
      </parse>
      <buffer>
        flush_mode interval
        retry_type exponential_backoff
        flush_interval 5s
      </buffer>
      <ssl>
        verify_mode none
      </ssl>
    </source>
    

    注意:强烈不建议在生产环境中禁用SSL验证,因为这会暴露数据传输过程中的安全风险。

  5. 使用正确的镜像:确保使用的Fluentd镜像支持且兼容你的证书格式和加密套件。有时,不同的镜像版本或构建可能对SSL/TLS的支持有差异。

如果以上方法都不能解决问题,建议直接联系阿里云的技术支持团队,他们能提供更具体的针对阿里云Kubernetes服务的指导和支持。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

国内唯一 Forrester 公共云容器平台领导者象限。

收录在圈子:
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
还有其他疑问?
咨询AI助理