我尝试设置 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 集群中的运行时是"容器式的"。
我的格雷洛格策略:
- 容器的体积:
volumeMounts:
- mountPath: /usr/share/graylog/data
name: graylog-data
- 音量:
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 运行,这可能会导致权限被拒绝。另外,我发现了一个可能对您有帮助的类似问题。