有没有办法从 Kubernetes 中的服务对象获取 activity 日志?
Is there a way of obtaining activity logs from Service objects in Kubernetes?
我有以下情况(这是我问问题的动机,不是问题本身):
- 我有一个接受用户上传的网络应用程序。
- 用户通过 Ingress 访问应用程序,
- 然后是服务,
- 然后是一个包含两个 Pods 的 Deployment。
- 每个 Pod 中包含的应用程序。
- 有时上传失败:
- 我可以在 Pod 的日志中看到上传正常。
- 我什至可以看到用户上传的数据
- Pod 中只有正常的日志。
- 但入口报告 HTTP 500 错误。
- 并且用户看到 HTTP 500 错误 - 连接被对等方重置。
如果 Pod 看起来没问题,但入口有问题,那么我应该检查中间人,即 Service。然后我意识到没有简单的方法可以从服务中获取日志。
所以这是我的问题:
- 如何从服务对象读取日志?我的意思是 activity 日志,而不是部署事件。
- 它们存在吗?
K8s中唯一产生日志的资源是Pods! Pods 导致容器的创建,容器本身导致在 K8s 节点上创建 Linux 进程。这些进程写入的日志被容器 运行time“收割”并提供给 K8s,例如当你 运行 kubectl logs
.
因此,只有 Pods 支持的 K8s 资源才会产生日志,例如部署、Daemonsets、StatefulSets 和作业。
服务只是配置网络流量如何路由到 Pods 的逻辑资源。因此,在某种程度上,它们具有基础 Pods,但不会产生任何额外的日志输出。服务资源的唯一有形结果是 K8s 节点上的 iptables 规则,它定义了如何将流量从服务 IP 路由到底层 Pods.
的 IP。
要解决与 Ingress 相关的问题,您可能会从 ingress controller 的日志中获得更多见解,该日志通常作为部署部署,因此由 Pods 提供支持。
我有以下情况(这是我问问题的动机,不是问题本身):
- 我有一个接受用户上传的网络应用程序。
- 用户通过 Ingress 访问应用程序,
- 然后是服务,
- 然后是一个包含两个 Pods 的 Deployment。
- 每个 Pod 中包含的应用程序。
- 有时上传失败:
- 我可以在 Pod 的日志中看到上传正常。
- 我什至可以看到用户上传的数据
- Pod 中只有正常的日志。
- 但入口报告 HTTP 500 错误。
- 并且用户看到 HTTP 500 错误 - 连接被对等方重置。
如果 Pod 看起来没问题,但入口有问题,那么我应该检查中间人,即 Service。然后我意识到没有简单的方法可以从服务中获取日志。
所以这是我的问题:
- 如何从服务对象读取日志?我的意思是 activity 日志,而不是部署事件。
- 它们存在吗?
K8s中唯一产生日志的资源是Pods! Pods 导致容器的创建,容器本身导致在 K8s 节点上创建 Linux 进程。这些进程写入的日志被容器 运行time“收割”并提供给 K8s,例如当你 运行 kubectl logs
.
因此,只有 Pods 支持的 K8s 资源才会产生日志,例如部署、Daemonsets、StatefulSets 和作业。
服务只是配置网络流量如何路由到 Pods 的逻辑资源。因此,在某种程度上,它们具有基础 Pods,但不会产生任何额外的日志输出。服务资源的唯一有形结果是 K8s 节点上的 iptables 规则,它定义了如何将流量从服务 IP 路由到底层 Pods.
的 IP。要解决与 Ingress 相关的问题,您可能会从 ingress controller 的日志中获得更多见解,该日志通常作为部署部署,因此由 Pods 提供支持。