Logging

参考 https://kubernetes.io/docs/concepts/cluster-administration/logging/

Accessing Log Data - Pods and Containers

kubectl logs -> API Server -> kubelet -> container logs

$ kubectl logs $POD_NAME
$ kubectl logs $POD_NAME -c $CONTAINER_NAME
$ kubectl logs $POD_NAME --all-containers
$ kubectl logs --selector app=demo
$ kubectl logs -f $POD_NAME   # follow latest logs
$ kubectl logs $POD_NAME --tail 5   # get last 5 entries logs

如果api server不可用,则需要手动去container所在节点查看container Log

crictl --runtime-endpoint unix:///run/containerd/containerd.sock logs $CONTAINER_ID

或者

tail /var/log/containers/$CONTAINER_NAME_$CONTAINER_ID

Accessing Log Data - Nodes

Node上有两个关键的组件,一个是``kubelet``, 一个是 kube-proxy

systemctl status kubelet.service  # check service status

journalctl -u kubelet.service
journalctl -u kubelet.service | grep -i ERROR
journalctl -u kubelet.service --since today --no-pager

Accessing Log Data - Control Plane

Run as Pods

$ kubectl logs -n kube-system $POD_NAME

Run from systemd

systemctl status kubelet.service  # check service status

journalctl -u kubelet.service

centralized logging solutions

fluentd