fluentd elasticsearch无法装载hostpath卷错误

tjvv9vkg  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(485)

在我的公司,kubernetes集群由一个团队管理,我们必须提供一个名称空间,然后创建我们的资源。我们不能使用诸如 hostPath 卷,我们不能创建新的角色或名称空间等。
现在来看 fluentd-elasticsearch 容器作为 DaemonSet ,它们似乎都在使用hostpath卷装载,但我不知道为什么。
例如,我浏览了以下内容:https://www.howtoforge.com/create-a-daemonset-in-kubernetes/
创造了这个:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-fluentd-elasticsearch-daemonset
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

但有个错误:

Error creating: pods "fluentd-elasticsearch-" is forbidden: unable to validate against any pod 
security policy: [spec.volumes[0]: Invalid value: "hostPath": hostPath volumes are not allowed 
to be used spec.volumes[1]: Invalid value: "hostPath": hostPath volumes are not allowed to be 
used]

所以我有几个问题:
fluentd是否正在装载卷,然后读取那些卷中的文件,这些文件被推送到elasticsearch?
我可以移除卷挂载吗?或者这是它正常工作所必需的吗?
fluentd到底在使用kubernetes api吗?
是否有任何非守护程序容器只使用kubernetesapi获取pod,然后使用logapi转发到logdb?

0kjbasz6

0kjbasz61#

fluentd是否正在装载卷,然后读取那些卷中的文件,这些文件被推送到elasticsearch?
docker正在节点的磁盘上存储日志。fluentd需要以某种方式访问这个日志文件;这就是为什么它作为守护程序运行,您需要它在每个具有hostpath的节点上运行以访问日志文件。
我可以移除卷挂载吗?或者这是它正常工作所必需的吗?
不,您不能“仅仅删除”卷装载(hostpath),因为fluentd将失去对docker保留在节点上的日志文件的访问。
fluentd到底在使用kubernetes api吗?
这个问题没有直截了当的答案。我发现有一些插件可以使用k8sapi访问k8s元数据,但我没有发现任何插件可以使用k8sapi来拉日志。
是否有任何非守护程序容器只使用kubernetesapi获取pod,然后使用logapi转发到logdb?
k8s文档中描述了一些类似的情况:带有日志代理的sidecar容器
所以是的,您可以将fluentd部署为sidecar来收集日志并将其转发到db。查看文档了解更多详细信息。

相关问题