我正在使用 kubernetes/client-go检索一些 pod 日志。如果 pod 有一个容器,我可以检索日志
req := client.CoreV1().Pods("namespace").GetLogs("mypod", &corev1.PodLogOptions{})
logs, err := req.Stream()
[...]
这很好用,直到我遇到一个包含多个容器的 pod,我收到以下错误
a container name must be specified for pod xxx, choose one of: [aaa bbb] or one of the init containers: [aaa bbb]
我希望在
corev1.PodLogOptions
上找到一个合适的 field 。对象,但我只找到一个特定的 Container
field 。我正在寻找
--all-containers
与 REST 客户端提供的等效。$ kubectl logs mypod --all-containers
这可能吗?有什么选择吗?
最佳答案
如果您查看 kubectl
代码他们只是在一个 pod 中获取所有相关容器,然后迭代它们并逐个容器收集日志容器。所以我认为没有 REST API 端点可以为您做到这一点。
见这里:https://github.com/kubernetes/kubectl/blob/19fd05792d8c806a5024d6bbbdd7d66d3234cbcb/pkg/polymorphichelpers/logsforobject.go#L86
关于go - 如何通过 corev1.PodLogOptions 从所有容器中获取日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61777982/