go - 如何通过 corev1.PodLogOptions 从所有容器中获取日志?
问题描述
我正在使用kubernetes/client-go来检索一些 pod 日志。如果 pod 有一个容器,我可以检索日志
req := client.CoreV1().Pods("namespace").GetLogs("mypod", &corev1.PodLogOptions{})
logs, err := req.Stream()
[...]
这很好用,直到我遇到一个包含多个容器的 pod,我收到以下错误
必须为 pod xxx 指定容器名称,选择以下之一:[aaa bbb] 或 init 容器之一:[aaa bbb]
我希望在corev1.PodLogOptions
对象上找到一个可容纳的字段,但我只找到一个特定的Container
字段。
我正在寻找--all-containers
REST 客户端提供的等价物。
$ kubectl logs mypod --all-containers
这可能吗?有什么选择吗?
解决方案
如果您查看kubectl
代码,它们只会在一个 pod 中获取所有相关容器,然后遍历它们并逐个容器收集日志容器。所以我认为没有 REST API 端点可以为您做到这一点。
推荐阅读
- python - Python:如何在 X 的出现之间对数据进行分组
- mysql - 连接3个表而不访问SQL中的中间表
- r - 在 R 中寻找更快的 FOR 循环替代方案
- python - 20Mbits/s 的 RHEL 8.2 podman 无根容器网络瓶颈
- javascript - 检查字符串是否包含图像
- javascript - 更新响应为光标分页形状的 apollo 缓存
- java - 为什么我们在将 int 转换为 bigInteger 时不使用 new 关键字,而在从 string 转换为 bigInteger 时使用 new 关键字?
- visual-studio-code - 用于启动/重启的单个 VS Code 快捷方式
- javascript - 将数组中的所有重复值推送到新数组
- logging - spring-cloud-data flow:如何将流日志发送到 kibana?