温馨提示×

CentOS上Kubernetes日志如何查看

小樊
60
2025-10-13 11:32:08
栏目: 智能运维

CentOS上查看Kubernetes日志的常用方法

1. 使用kubectl命令(官方推荐,最常用)

kubectl logs是Kubernetes原生命令行工具,用于查看Pod中容器的日志,适用于大多数场景。

  • 基础用法:查看指定Pod的日志(若Pod有多个容器,需通过-c指定容器名):

    kubectl logs <pod-name> [-c <container-name>] [-n <namespace>]
    

    示例:查看default命名空间下my-nginx Pod的日志:

    kubectl logs my-nginx
    
  • 核心参数详解(提升日志查看效率):

    参数 说明 示例
    -f/--follow 实时跟踪日志输出(类似tail -f kubectl logs -f my-nginx
    --tail=N 仅显示最后N行日志(默认全部) kubectl logs --tail=100 my-nginx
    --since=5m 显示最近5分钟内的日志(支持s/m/h kubectl logs --since=1h my-nginx
    --previous 查看已终止容器的日志(如Pod崩溃重启前) kubectl logs -p my-nginx
    -n/--namespace 指定命名空间(默认default kubectl logs -n kube-system my-pod
    -l/--selector 通过标签选择器查看多个Pod日志 kubectl logs -l app=nginx
  • 常见场景示例

    • 实时查看日志:kubectl logs -f my-nginx -n default
    • 查看过去1小时的日志:kubectl logs --since=1h my-nginx
    • 查看崩溃Pod的上一次日志:kubectl logs -p my-crashed-pod
    • 查看多容器Pod的所有容器日志:kubectl logs --all-containers=true my-multi-container-pod

2. 查看Kubernetes组件系统日志(排查集群组件问题)

Kubernetes集群组件(如kubeletkube-apiserverkube-scheduler)的日志存储在系统日志中,可通过journalctl命令查看:

  • 查看kubelet日志(节点级核心组件,负责Pod调度):
    journalctl -u kubelet [-f]  # -f 实时跟踪
    
  • 查看kube-apiserver日志(集群API入口):
    journalctl -u kube-apiserver [-f]
    
  • 查看kube-scheduler日志(调度Pod到节点):
    journalctl -u kube-scheduler [-f]
    
  • 过滤特定时间范围的日志(如2025-10-01之后的日志):
    journalctl --since="2025-10-01" -u kubelet
    
  • 按优先级过滤(如仅查看错误日志):
    journalctl -p err -u kubelet
    

3. 直接查看容器日志文件(需节点访问权限)

若Kubernetes使用json-file日志驱动(默认),容器日志会存储在节点的/var/log/pods/目录下,结构为<namespace>_<pod-name>_<pod-uid>/<container-name>/0.log

  • 查找Pod日志目录
    cd /var/log/pods/
    ls -l  # 查找对应Pod的目录
    
  • 查看特定Pod的容器日志
    cat <namespace>_<pod-name>_<pod-uid>/<container-name>/0.log
    
    示例:查看default命名空间下my-nginx Pod的日志:
    cat default_my-nginx_<pod-uid>/nginx/0.log
    

    注意:直接操作文件系统需具备节点root权限,且日志轮转可能导致历史日志丢失,建议优先使用kubectl logs

4. 使用第三方工具(大规模集群推荐)

对于大规模集群,kubectl logs可能无法满足高效查看需求,可使用以下工具:

  • Kubetail:将多个Pod的日志聚合到一个终端,支持彩色输出。
    • 安装:brew install kubetail(Mac)或下载二进制文件放到/usr/local/bin
    • 使用:kubetail <pod-prefix> -n <namespace>(如kubetail my-app -n default)。
  • Stern:更强大的多容器日志查看工具,支持正则表达式、时间过滤。
    • 安装:brew install stern(Mac)或asdf plugin add stern
    • 使用:stern <pod-prefix> -n <namespace>(如stern my-app -n default)。
  • ELK Stack(Elasticsearch+Fluentd+Kibana):集中式日志收集与可视化,适合企业级场景。
    • 部署:通过DaemonSet部署Fluentd收集节点日志,发送到Elasticsearch,通过Kibana可视化。

注意事项

  • 权限问题:确保当前用户有足够权限执行kubectl命令(如cluster-admin角色)或访问节点文件系统。
  • 日志轮转:Pod日志默认会轮转(如json-file驱动的max-sizemax-files配置),长期日志需结合日志聚合工具存储。
  • 敏感信息:日志中可能包含敏感信息(如密码、密钥),查看时需注意保密。

0