# 基本的日志

本章节中,您将了解到如何在 Kubernetes 中使用最基本的日志,此时,日志信息将输出到标准输出流(standard output stream)。请参考下面的例子,该例子中的 Pod 包含一个容器,该容器每秒钟向标准输出写入一些文本内容:

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox
    args: [/bin/sh, -c,
            'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done']
1
2
3
4
5
6
7
8
9
10
  • 执行命令
    kubectl apply -f https://kuboard.cn/statics/learning/logs/counter-pod.yaml
    
    1
  • 使用 kubectl logs 命令查看日志,如下所示:
    kubectl logs -f counter
    
    1
    输出结果如下所示:
    0: Mon Jan  1 00:00:00 UTC 2001
    1: Mon Jan  1 00:00:01 UTC 2001
    2: Mon Jan  1 00:00:02 UTC 2001
    ...
    
    1
    2
    3
    4

如果容器已经崩溃停止,您可以仍然使用 kubectl logs --previous 获取该容器的日志,只不过需要添加参数 --previous。 如果 Pod 中包含多个容器,而您想要看其中某一个容器的日志,那么请在命令的最后增加容器名字作为参数。更多信息请参考 kubectl logs (opens new window)

常用的日志命令示例如下:

# 追踪名称空间 nsA 下容器组 pod1 的日志
kubectl logs -f pod1 -n nsA

# 追踪名称空间 nsA 下容器组 pod1 中容器 container1 的日志
kubectl logs -f pod1 -c container1 -n nsA

# 查看容器组 nginx 下所有容器的日志
kubectl logs nginx --all-containers=true

# 查看带有 app=nginx 标签的所有容器组所有容器的日志
kubectl logs -lapp=nginx --all-containers=true

# 查看容器组 nginx 最近20行日志
kubectl logs --tail=20 nginx

# 查看容器组 nginx 过去1个小时的日志
kubectl logs --since=1h nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
更新时间: 2019-10-12 20:01:03