kubectl logs deploy/my-deployment 不显示来自所有 pods 的日志

kubectl logs deploy/my-deployment does not show logs from all pods

https://kubernetes.io/docs/reference/kubectl/cheatsheet/#interacting-with-deployments-and-services 中显示的 kubectl logs deploy/my-deployment 的用途是什么?

我认为它会向我显示作为 my-deployment 对象的一部分部署的所有 pods 的日志。但是,即使我的部署中有 2 个 pods,该命令也只显示其中一个的日志。

正如您从链接的文档中看到的那样:

kubectl logs deploy/my-deployment                         # dump Pod logs for a Deployment (single-container case)
kubectl logs deploy/my-deployment -c my-container         # dump Pod logs for a Deployment (multi-container case)

kubectl logs deploy/my-deployment 用于只有一个容器的情况。所以在你的情况下可能是第一个。如果您有多个容器,则必须使用 -c 选项指定一个容器。

如果你想拥有来自多个pods的日志,你可以使用Stern

如果您的部署有多个 pod 副本,那么 kubectl logs deployment/... 只会自己选择一个。

这是一个例子:

kubectl  get pods -n kube-system | grep coredns
coredns-78fcd69978-dqf95       1/1     Running   0          42h
coredns-78fcd69978-vgvf2       1/1     Running   0          42h
kubectl logs deployment/coredns -n kube-system 
Found 2 pods, using pod/coredns-78fcd69978-vgvf2

按照提供的文档,当有多个 Pods 使用以下命令时,它一次只显示一个 Pod 的日志,它会在某个时间点随机选择一个。

kubectl get pods -n kube-system | grep coredns

如果有多个容器则可以使用“-c”指定并提及容器名称。 通过遵循 Stren 文档,可以从 pod 中的多个容器获取日志。使用以下命令将显示多个容器数据。

kubectl 日志 deploy/my-deployment -c my-container