我有以下情況(這是我提出問題的動機,而不是問題本身):
- 我有一個接受用戶上傳的網路應用程式。
- 用戶通過 Ingress 訪問應用程式,
- 然后是服務,
- 然后是帶有兩個 Pod 的部署。
- 包含在每個 Pod 中的應用程式。
- 有時上傳失敗:
- 我可以在 Pod 的日志中看到上傳正常。
- 我什至可以看到用戶上傳的資料。
- Pod 中只有普通日志。
- 但是入口報告 HTTP 500 錯誤。
- 用戶會看到 HTTP 500 錯誤 - 對等方重置連接。
如果 Pod 看起來沒問題,但 ingress 抱怨,那么我應該檢查中間人,即服務。然后我意識到沒有簡單的方法可以從服務中獲取日志。
所以這是我的問題:
- 如何從 Service 物件讀取日志?我的意思是活動日志,而不是部署事件。
- 它們存在嗎?
uj5u.com熱心網友回復:
K8s 中唯一產生日志的資源是 Pods!Pod 導致容器的創建,而容器則導致在 K8s 節點上創建 Linux 行程。這些行程寫入的日志由容器運行時“獲取”并提供給 K8s,例如當您運行kubectl logs.
因此,只有由 Pod 支持的 K8s 資源才會生成日志,例如 Deployment、Daemonsets、StatefulSets 和 Jobs。
服務只是配置網路流量如何路由到 Pod 的邏輯資源。因此,在某種程度上,它們具有底層 Pod,但不產生任何額外的日志輸出。Service 資源的唯一有形結果是 K8s 節點上的 iptables 規則,它定義了流量必須如何從 Service IP 路由到底層 Pod 的 IP。
要解決與 Ingress 相關的問題,您可能會從Ingress 控制器的日志中獲得更多見解,該控制器通常部署為部署,因此由 Pod 提供支持。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358994.html
標籤:Kubernetes 日志记录
