kubectl logs
命令查看Pod容器日志kubectl logs
是Kubernetes官方提供的核心日志查看工具,適用于大多數場景。
Running
狀態)。kubectl logs <pod-name>
-c
參數指定容器名稱。kubectl logs <pod-name> -c <container-name>
-f
參數實時查看日志輸出(類似tail -f
),適合監控正在運行的服務。kubectl logs -f <pod-name>
--previous
參數查看前一個實例的日志。kubectl logs --previous <pod-name>
--tail
參數指定顯示最后N行日志(如--tail=100
顯示最后100行),避免輸出過多。kubectl logs --tail=100 <pod-name>
--since
參數查看指定時間后的日志(支持5m
、1h
、2d
等單位),或通過--since-time
指定具體時間點(如2025-10-10T10:00:00Z
)。kubectl logs --since=1h <pod-name>
kubectl logs --since-time="2025-10-10T10:00:00Z" <pod-name>
default
),需通過-n
參數指定命名空間。kubectl logs <pod-name> -n <namespace>
journalctl
查看K8s組件系統日志K8s集群的核心組件(如kubelet
、kube-apiserver
、kube-controller-manager
、kube-scheduler
)的日志由系統日志服務journald
管理,可通過journalctl
命令查看。
journalctl -u kubelet -f # 實時跟蹤
journalctl -u kubelet --since="2025-10-10" # 指定時間范圍
journalctl -u kube-apiserver -f
journalctl -u kube-controller-manager -f
journalctl -u kube-scheduler -f
對于生產環境中的大規模K8s集群,手動使用kubectl
查看日志效率低下,建議使用日志聚合工具集中收集、存儲和分析日志。常見工具包括:
Filebeat
(輕量級日志收集器),收集容器日志并發送至Elasticsearch
存儲;使用Kibana
(可視化工具)進行日志查詢、分析和可視化。filebeat-*
),輸入關鍵詞(如error
、pod-name
)即可快速檢索日志。kubectl logs
,但支持多容器、多Pod的日志聚合,支持彩色輸出、正則表達式過濾和實時跟蹤。brew install stern # macOS(需安裝Homebrew)
# 或通過Linux包管理器安裝
stern <pod-name> -n <namespace> # 查看指定Pod的日志
stern "app=myapp" -c web -n <namespace> # 通過標簽選擇器查看多個Pod的日志
brew install kubetail # macOS
kubetail <pod-prefix> -n <namespace> # 聚合前綴匹配的Pod日志
若K8s組件或Pod日志無法定位問題,可查看CentOS節點的系統日志,排查底層系統故障(如網絡、磁盤、內存問題)。
tail -f /var/log/messages # CentOS 7及以下
journalctl -xe # CentOS 8及以上(實時查看系統日志)
dmesg -T # 查看內核環緩沖區日志(包含硬件、驅動相關信息)
cluster-admin
角色或自定義角色的get
、list
、read
權限)。kubelet
配置的containerLogMaxSize
和containerLogMaxFiles
參數控制),長期運行的Pod可能只保留最近幾天的日志。若需保留更久日志,建議配置日志聚合工具。