我有我的kafka_consumer代码的docker映像,该映像正在使用来自主题的消息。现在我所做的是我从成功运行的docker映像中创建了一个pod。当我发出命令时 kubectl日志只打印前三行日志,然后退出。当我运行docker映像时,它会给我完整的输出,其中在消费者记录中会打印几次。那么kubernetes日志怎么了?
我尝试使用kubectl logs <pod-name>
,它只返回3行日志。
我希望输出显示正确的详细消息,如下所示:
log4j:WARN No appenders could be found for logger (org.apache.kafka.clients.consumer.ConsumerConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
ConsumerRecord(topic = tt, partition = 0, offset = 399219, CreateTime = 1565941033699, serialized key size = 3, serialized value size = 6, headers = RecordHeaders(headers = [], isReadOnly = false), key = key, value = hello )
当我使用kubectl时,我只会得到log4j的前三行,而不是ConsumerRecord。
答案 0 :(得分:0)
您可以使用kubectl logs --follow [Pod name] -c [Container name]
,这将向您显示实时日志
添加--follow
将使您可以实时查看日志
答案 1 :(得分:0)
@Override
public void PickiTonCompleteListener(String path, boolean wasDriveFile) {
//Do what you want with the path
}
kubectl logs
(/var/log/*
)出现在任何Pod上时,这取决于底层主机操作系统logrotate。
您可以通过比较kubectl logs
的日志和发送到querying the stdout/stderr
streams sent to the node's log files的日志(如果有的话,例如 Fluentd )来确定是否是问题所在或 ELK堆栈),或直接 SSHing 进入节点并直接在日志记录路径中找到它们。
关于如何运行Kubernetes集群的详细信息并不多,但是所提供的信息强烈表明这是节点级的问题,特别是内部如何管理pod日志。
最后,使用kubectl exec <podname> -- /bin/bash
的方法是确定容器是否在本地存储这些日志以及问题是何时将它们发送到主机节点的好主意。
答案 2 :(得分:0)
我发现问题是该Pod无法连接到我的系统中安装的本地kafka。这就是为什么它无法从kafka打印任何记录的原因。我所做的是我使用了一个外部kafka群集,然后它按预期方式开始工作。