Kubernetes (1.20) 集群中的 Graylog
Graylog in Kubernetes (1.20) cluster
我尝试设置 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 部署:
- 容器的体积单位:
volumeMounts:
- mountPath: /usr/share/graylog/data
name: graylog-data
- 音量:
volumes:
- name: graylog-data
hostPath:
path: /mnt/k8s-storage/graylog-data
type: DirectoryOrCreate
从 hostPath 卷的概念开始,这里几乎没有什么要看的:
A hostPath
volume mounts a file or directory from the host node's
filesystem into your Pod.
Pods with identical configuration (such as created from a PodTemplate)
may behave differently on different nodes due to different files on
the nodes
The files or directories created on the underlying hosts are only
writable by root. You either need to run your process as root in a
privileged Container or modify the file permissions on the host to be
able to write to a hostPath
volume
hostPath
如果您想在 DaemonSet
中将其用于日志收集器 运行ning,那么 hostPath
会很好,但在您描述的用例中,它可能并不理想因为你不直接控制你的 pods 将 运行 在哪个节点上,所以你不能保证 pod 实际上会被调度到具有数据量的节点上。
但如果不是这样,您还需要注意 type: DirectoryOrCreate
在这里不是最好的,因为我看到您想要加载文件。最好使用:
File
: 文件必须存在于给定路径
或
FileOrCreate
:如果给定路径不存在任何内容,将根据需要在此处创建一个空文件,权限设置为 0644,与 Kubelet 具有相同的组和所有权。
最后,可能存在权限问题。如前所述:
The files or directories created on the underlying hosts are only
writable by root.
Graylog 是 运行 可能对您有帮助的 userid 1100 which might cause a permission denial. Also, I have found a similar issue。
我尝试设置 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 部署:
- 容器的体积单位:
volumeMounts:
- mountPath: /usr/share/graylog/data
name: graylog-data
- 音量:
volumes:
- name: graylog-data
hostPath:
path: /mnt/k8s-storage/graylog-data
type: DirectoryOrCreate
从 hostPath 卷的概念开始,这里几乎没有什么要看的:
A
hostPath
volume mounts a file or directory from the host node's filesystem into your Pod.Pods with identical configuration (such as created from a PodTemplate) may behave differently on different nodes due to different files on the nodes
The files or directories created on the underlying hosts are only writable by root. You either need to run your process as root in a privileged Container or modify the file permissions on the host to be able to write to a
hostPath
volume
hostPath
如果您想在 DaemonSet
中将其用于日志收集器 运行ning,那么 hostPath
会很好,但在您描述的用例中,它可能并不理想因为你不直接控制你的 pods 将 运行 在哪个节点上,所以你不能保证 pod 实际上会被调度到具有数据量的节点上。
但如果不是这样,您还需要注意 type: DirectoryOrCreate
在这里不是最好的,因为我看到您想要加载文件。最好使用:
File
: 文件必须存在于给定路径
或
FileOrCreate
:如果给定路径不存在任何内容,将根据需要在此处创建一个空文件,权限设置为 0644,与 Kubelet 具有相同的组和所有权。
最后,可能存在权限问题。如前所述:
The files or directories created on the underlying hosts are only writable by root.
Graylog 是 运行 可能对您有帮助的 userid 1100 which might cause a permission denial. Also, I have found a similar issue。