在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>