【问题标题】:Graylog in Kubernetes (1.20) clusterKubernetes (1.20) 集群中的 Graylog
【发布时间】:2021-02-10 08:45:48
【问题描述】:

我尝试设置graylog
此部署有效。但我需要为 graylog 部署添加一个卷。因为我想安装插件。 当我添加卷(hostPath)并启动 pod 时,我的 pod 中出现错误:

ERROR StatusLogger File not found in file system or classpath: /usr/share/graylog/data/config/log4j2.xml
ERROR StatusLogger Reconfiguration failed: No configuration found for '70dea4e' at 'null' in 'null'
06:37:19.707 [main] ERROR org.graylog2.bootstrap.CmdLineTool - Couldn't load configuration: Properties file /usr/share/graylog/data/config/graylog.conf doesn't exist!

我明白了,该 pod 在卷中创建了目录(所有者 id 1100:1100),但那里没有任何文件。

Kubernetes 版本是 1.20 我的 kubernetes 集群中的运行时是“containerd”。

我的 Graylog 部署:

  1. 容器的体积:

volumeMounts:
    - mountPath: /usr/share/graylog/data
      name: graylog-data
  1. 卷:

 volumes:
  - name: graylog-data
    hostPath:
      path: /mnt/k8s-storage/graylog-data
      type: DirectoryOrCreate

【问题讨论】:

  • Welcome to the Stack udg :) 您的卷的type 可疑。你能用file代替DirectoryOrCreate吗?与此同时,我正在进一步调查。
  • 我找到了其他决定。我使用 emptyDir 卷。在初始化容器中,我下载了 Graylog 插件,但还没有任何卷。

标签: kubernetes graylog


【解决方案1】:

hostPath 卷的概念开始,这里有几件事可看:

hostPath 卷从主机节点的 文件系统到你的 Pod 中。

具有相同配置的 Pod(例如从 PodTemplate 创建的) 由于文件不同,在不同节点上的行为可能会有所不同 节点

在底层主机上创建的文件或目录仅 根可写。您要么需要以 root 身份运行您的进程 特权容器或修改主机上的文件权限为 能够写入hostPath

hostPath 会很好,例如,如果您想将它用于在 DaemonSet 中运行的日志收集器,但在您描述的用例中,它可能并不理想,因为您不直接控制您的 pod 的哪个节点将继续运行,因此您不能保证 Pod 将实际调度到具有数据量的节点上。

但如果不是这样,您还需要注意 type: DirectoryOrCreate 在这里不是最好的,因为我看到您想要加载文件。最好使用以下任何一种:

  • File: 文件必须存在于给定路径

  • FileOrCreate:如果给定路径不存在任何内容,则会根据需要在此处创建一个空文件,权限设置为 0644,与 Kubelet 具有相同的组和所有权。

最后,可能存在权限问题。如前所述:

在底层主机上创建的文件或目录仅 可由 root 写入。

Graylog 使用userid 1100 运行,这可能会导致权限被拒绝。另外,我找到了一个similar issue,可能对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2020-03-26
    相关资源
    最近更新 更多