Kubernetes (1.20) 集群中的 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 集群中的运行时是"容器式的"。

我的格雷洛格策略:

  1. 容器的体积:
<小时 />
volumeMounts:
- mountPath: /usr/share/graylog/data
name: graylog-data
  1. 音量:
<小时 />
volumes:
- name: graylog-data
hostPath:
path: /mnt/k8s-storage/graylog-data
type: DirectoryOrCreate

从 hostPath 卷的概念开始,这里要看的很少:

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

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

在底层主机上创建的文件或目录仅 可由根写入。您需要在 特权容器或将主机上的文件权限修改为 能够写入hostPath

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

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

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

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

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

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

Graylog 正在使用用户 ID 1100 运行,这可能会导致权限被拒绝。另外,我发现了一个可能对您有帮助的类似问题。

相关内容

  • 没有找到相关文章

最新更新