在CentOS上部署Kubernetes(K8s)后,查看服务日志是非常重要的操作,可以帮助您及时排查和解决问题。以下是几种常见的方法来查看K8s部署的日志:
kubectl
命令查看日志kubectl
是Kubernetes的官方命令行工具,可以用来查看Pod的日志。以下是具体步骤:
登录到K8S集群:
kubectl config use-context my-k8s-cluster
获取Pod名称:
kubectl get pods
查看特定Pod的日志:
kubectl logs <pod-name>
如果您的服务有多个容器,可以通过 -c
参数指定容器名称:
kubectl logs -c <container-name> <pod-name>
实时查看服务日志信息,通过 -f
参数实现:
kubectl logs -f <pod-name>
查看最新日志行,可以使用 --tail
参数:
kubectl logs --tail 100 <pod-name>
journalctl
命令查看系统日志journalctl
是Linux系统日志的工具,可以用来查看K8s组件的日志:
查看 kube-scheduler
的日志:
journalctl -u kube-scheduler
查看 kubelet
的日志:
journalctl -u kubelet
Kubetail 是一个简单的Shell脚本,可以将多个Pod中的日志信息聚合到一起进行展示,并支持彩色输出和条件过滤。
安装Kubetail:
brew tap johanhaleby/kubetail && brew install kubetail
使用Kubetail查看日志:
kubetail <pod-name>
您可以使用各种参数来定制输出,例如:
kubetail <pod-name> -c <container-name> -n <namespace> --regex "<regex>"
Stern 是一个用Go语言开发的多容器和容器日志查看工具,开箱即用。
安装Stern:
brew install stern
使用Stern查看日志:
stern <pod-name>
您可以指定命名空间、容器名称、使用正则表达式等。
ELK堆栈是日志管理和分析的强大工具组合。
部署ELK堆栈:
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
spec:
selector:
app: elasticsearch
ports:
- protocol: TCP
port: 9200
targetPort: 9200
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: elasticsearch
spec:
replicas: 1
selector:
matchLabels:
app: elasticsearch
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1
ports:
- containerPort: 9200
查看日志:使用Kibana来查看存储在Elasticsearch中的日志。
kubectl logs <pod-name> -n <namespace>